Skip to content

Instantly share code, notes, and snippets.

@EwanFox
Last active July 21, 2022 12:56
Show Gist options
  • Save EwanFox/8427f9d90a8648c00363e4796f38bd55 to your computer and use it in GitHub Desktop.
Save EwanFox/8427f9d90a8648c00363e4796f38bd55 to your computer and use it in GitHub Desktop.
E
BITS == 32
MINHEAP 4096
MINSTACK 1024
MOV R1 SP
CAL ._Hx4maini8
MOV SP R1
HLT
._Hx5inputvs
PSH R1
MOV R1 SP
LLOD R3 R1 2
.input_loop
IN R2 %TEXT
BRZ .input_end R2
STR R3 R2
INC R3 R3
JMP .input_loop
.input_end
MOV SP R1
POP R1
RET
._Hx5inputvi32
PSH R1
MOV R1 SP
PSH .input_int32_str
CAL ._Hx5inputvs
ADD SP SP 1
IMM R3 0
IMM R4 0
.input_int32_loop
LLOD R5 .input_int32_str R4
MLT R3 R3 10
ADD R3 R3 R5
INC R4 R4
BRL .input_int32_loop R4 20
LSTR R1 2 R3
.input_int32_str
DW [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
MOV SP R1
POP R1
RET
._Hx7printlnvs
PSH R1
MOV R1 SP
LLOD R2 R1 2
.println_loop
LOD R3 R2
INC R2 R2
BRZ .println_end R3
OUT %TEXT R3
JMP .println_loop
.println_end
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx7printlnvi32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %INT R2
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx7printlnvu32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %UINT R2
OUT %TEXT '\n'
MOV SP R1
POP R1
RET
._Hx5printvs
PSH R1
MOV R1 SP
LLOD R2 R1 2
.print_loop
LOD R3 R2
INC R2 R2
BRZ .print_end R3
OUT %TEXT R3
JMP .print_loop
.print_end
MOV SP R1
POP R1
RET
._Hx5printvi32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %INT R2
MOV SP R1
POP R1
RET
._Hx5printvu32
PSH R1
MOV R1 SP
LLOD R2 R1 2
OUT %UINT R2
MOV SP R1
POP R1
RET
._Hx4maini8
PSH R1
MOV R1 SP
PSH .str0
CAL ._Hx7printlnvs
ADD SP SP 1
ADD SP SP 0
MOV SP R1
POP R1
RET
.str0
DW [ "Hello World!" 0 ]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment