115 lines
1.7 KiB
Plaintext
115 lines
1.7 KiB
Plaintext
fast procedure read_character
|
|
begin
|
|
nop mov eax 0
|
|
nop mov edi r12d
|
|
nop mov esi r13d
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
fast procedure write_character
|
|
begin
|
|
nop mov eax 1
|
|
nop mov edi r12d
|
|
nop mov esi r13d
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
fast procedure write_string
|
|
begin
|
|
nop mov eax 1
|
|
nop mov edi r12d
|
|
nop mov esi r13d
|
|
nop mov edx r14d
|
|
nop syscall
|
|
end procedure
|
|
|
|
fast procedure write_space
|
|
s8 space = ' '
|
|
begin
|
|
nop mov eax 1
|
|
nop mov edi 1
|
|
nop mov esi space
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
fast procedure write_line_feed
|
|
s8 line_feed = '\n'
|
|
begin
|
|
nop mov eax 1
|
|
nop mov edi 1
|
|
nop mov esi line_feed
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
unix program main
|
|
s8 <> failure = "> nop file\n\0"
|
|
s8 <> digits = "0123456789abcdef"
|
|
|
|
s32 file = 0
|
|
s8 byte = 0
|
|
begin
|
|
nop nop nop
|
|
|
|
nop pop r11
|
|
nop cmp r11 2
|
|
nop je skip
|
|
nop mov r12d 1
|
|
nop mov r13d failure
|
|
nop mov r14d 12
|
|
nop fastcall write_string
|
|
nop exit 1
|
|
nop skip:
|
|
|
|
nop pop r11
|
|
nop pop r11
|
|
nop mov eax 2
|
|
nop mov edi r11d
|
|
nop xor esi esi
|
|
nop xor edx edx
|
|
nop syscall
|
|
nop mov [file] eax
|
|
|
|
main_loop:
|
|
nop mov r12d [file]
|
|
nop mov r13d byte
|
|
nop fastcall read_character
|
|
nop
|
|
nop mov r10d eax
|
|
nop mov r15b [byte]
|
|
nop cmp r15b 144
|
|
nop jne main_loop_skip
|
|
nop fastcall write_line_feed
|
|
nop main_loop_skip:
|
|
nop
|
|
nop mov r12d 1
|
|
nop mov r13d digits
|
|
nop machine 0x04ffc141 end machine
|
|
nop add r13d r15d
|
|
nop fastcall write_character
|
|
nop
|
|
nop mov r12d 1
|
|
nop mov r13d digits
|
|
nop mov r15b [byte]
|
|
nop and r15d 15
|
|
nop add r13d r15d
|
|
nop fastcall write_character
|
|
nop
|
|
nop fastcall write_space
|
|
nop cmp r10d 0
|
|
nop jne main_loop
|
|
|
|
nop fastcall write_line_feed
|
|
|
|
nop mov eax 3
|
|
nop mov edi [file]
|
|
nop syscall
|
|
|
|
nop exit 0
|
|
|
|
nop nop nop
|
|
end program
|