# Mu - subx/examples/ex4.subx

     1 ## read a character from stdin, save it to a global, write it to stdout
     2 #
     3 # To run (from the subx directory):
     4 #   $ subx translate examples/ex4.subx -o examples/ex4
     5 #   $ subx run examples/ex4
     6
     7 == code
     8 # syscall(read, stdin, x, 1)
     9   # fd = 0 (stdin)
    10 bb/copy-to-EBX  0/imm32
    11   # initialize x (location to write result to)
    12 b9/copy-to-ECX  x/imm32
    13   # size = 1 character
    14 ba/copy-to-EDX  1/imm32
    15   # syscall
    16 b8/copy-to-EAX  3/imm32/read
    17 cd/syscall  0x80/imm8
    18
    19 # syscall(write, stdout, x, 1)
    20   # fd = 1 (stdout)
    21 bb/copy-to-EBX  1/imm32
    22   # initialize x (location to read from)
    23 b9/copy-to-ECX  x/imm32
    24   # size = 1 character
    25 ba/copy-to-EDX  1/imm32
    26   # syscall
    27 b8/copy-to-EAX  4/imm32/write
    28 cd/syscall  0x80/imm8
    29
    30 # syscall(exit, EBX)
    31 b8/copy-to-EAX  1/imm32/exit
    32 cd/syscall  0x80/imm8
    33
    34 == data
    35 x:
    36   00 00 00 00  # space for read() to write to
    37
    38 # vim:nowrap:textwidth=0