# Read a character from stdin, save it to a global, write it to stdout. # # To run: # $ bootstrap/bootstrap translate ex4.subx -o ex4 # $ bootstrap/bootstrap run ex4 == data # the global variable we save to X: 0/imm32 # space for read() to write to == code Entry: # read(stdin, X, 1) # . fd = 0 (stdin) bb/copy-to-ebx 0/imm32 # . data = X (location to write result to) b9/copy-to-ecx X/imm32 # . size = 1 character ba/copy-to-edx 1/imm32 # . syscall e8/call syscall_read/disp32 # write(stdout, X, 1) # . fd = 1 (stdout) bb/copy-to-ebx 1/imm32 # . initialize X (location to read from) b9/copy-to-ecx X/imm32 # . size = 1 character ba/copy-to-edx 1/imm32 # . syscall e8/call syscall_write/disp32 # exit(ebx) e8/call syscall_exit/disp32 # . . vim:nowrap:textwidth=0