Files
wassembly/bin/test.wasm

111 lines
1.3 KiB
Plaintext

#DEFINE LETTER_O 'o'
addi $10 $-5 %A;
subi %A $2 %B;
muli $2 %B %C;
divi $2 %C %D;
# Set A to zero
seti %A $0;
# Loop from 0 to 10
count_loop:
addi $1 %A %A;
# Print the current value
int $1;
seti %B %A;
seti %A $32; # space
int $0;
seti %A %B;
lti %A $10;
jmp count_loop;
#DEFINE PRINT_CHAR $0
# Hello world
seti %A 'H'; # H
int PRINT_CHAR;
seti %A 'e'; # e
int PRINT_CHAR;
seti %A $108; # l
int PRINT_CHAR;
int PRINT_CHAR;
seti %A LETTER_O;
int PRINT_CHAR;
seti %A $32; # space
int $0;
pushi $68; # D
pushi $76; # L
pushi $82; # R
pushi $79; # O
pushi $87; # W
seti %B $5;
world_loop:
popi %A;
int $0;
subi %B $1 %B;
gti %B $0;
jmp world_loop;
seti %A $10; # newline
int $0;
seti %B $1024;
seti [%B] $50;
seti %A $66;
seti [$10] %A;
# Print 66 as decimal
seti %A [$10];
int $1;
seti %A $10; # newline
int $0;
# Print 50 as hex (0x32)
seti %A [$1024];
int $2;
# Push the string "hell" into register A
seti %A $108; # l
shli %A $8 %A;
addi %A $108 %A; # l
shli %A $8 %A;
addi %A $101 %A; # e
shli %A $8 %A;
addi %A $104 %A; # h
# Store A at memory location 900
seti [$900] %A;
# Setup to print a string from position 900
seti %A $900;
seti %B $4;
int $3;
# Call a function
call noop_function;
# Echo a character
int $4;
int $0;
seti %A $10; # newline
int $0;
# Echo a string
seti %A $0;
seti %B $10;
int $5;
int $3;
exit;
noop_function:
ret;