mu/archive/2.transect/ex4.k2

35 lines
723 B
Plaintext

## read a character from stdin, save it to a global, write it to stdout
# variables are always references
# read their address with their names: x (can't write to their address)
# read/write their contents with a lookup: *x
var x : char
fn main [
call read 0/stdin, x, 1/size
result/EAX <- call write 1/stdout, x, 1/size
call exit, result/EAX
]
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
]
fn exit x : int [
code/EBX <- copy x
code/EAX <- copy 1/exit
syscall
]