31 lines
598 B
Plaintext
31 lines
598 B
Plaintext
|
# read a character from stdin, save it to a local on the stack, write it to stdout
|
||
|
|
||
|
fn main [
|
||
|
var x : char
|
||
|
call read 0/stdin, x, 1/size
|
||
|
result/EBX <- call write 1/stdout, x, 1/size
|
||
|
call exit-EBX
|
||
|
]
|
||
|
|
||
|
fn read fd : int, x : (address array byte), size : int [
|
||
|
EBX <- copy fd
|
||
|
ECX <- copy x
|
||
|
EDX <- copy size
|
||
|
EAX <- copy 3/read
|
||
|
syscall
|
||
|
]
|
||
|
|
||
|
fn write fd : int, x : (address array byte), size : int [
|
||
|
EBX <- copy fd
|
||
|
ECX <- copy x
|
||
|
EDX <- copy size
|
||
|
EAX <- copy 4/write
|
||
|
syscall
|
||
|
]
|
||
|
|
||
|
# like exit, but assumes the code is already in EBX
|
||
|
fn exit-EBX [
|
||
|
code/EAX <- copy 1/exit
|
||
|
syscall
|
||
|
]
|