49 lines
936 B
Plaintext
49 lines
936 B
Plaintext
fast procedure getchar
|
|
begin
|
|
nop mov eax 0
|
|
nop mov edi 0
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
fast procedure putchar
|
|
begin
|
|
nop mov eax 1
|
|
nop mov edi 1
|
|
nop mov edx 1
|
|
nop syscall
|
|
end procedure
|
|
|
|
unix program main
|
|
s8 <> digits = "0123456789ABCDEF"
|
|
s8 byte = 0
|
|
s8 space = ' '
|
|
s8 line = '\n'
|
|
begin
|
|
main_loop:
|
|
nop mov esi byte
|
|
nop fastcall getchar
|
|
nop cmp eax 0
|
|
nop je main_skip
|
|
nop cmp [byte] 144 // Compare byte to "nop" instruction.
|
|
nop jne main_loop_skip // Skip if not "nop" instruction.
|
|
nop mov esi line
|
|
nop fastcall putchar
|
|
main_loop_skip:
|
|
nop mov esi digits
|
|
# nop sar [byte] 4
|
|
# nop add esi [byte]
|
|
nop fastcall putchar
|
|
nop mov esi digits
|
|
nop and [byte] 15
|
|
nop add esi [byte]
|
|
nop fastcall putchar
|
|
nop mov esi space
|
|
nop fastcall putchar
|
|
nop jmp main_loop // Loop back if not equal.
|
|
main_skip:
|
|
nop mov esi line
|
|
nop fastcall putchar
|
|
nop exit 0
|
|
end program
|