Untitled
unknown
plain_text
a year ago
1.3 kB
11
Indexable
```c
int putchar(int c);
void print_string(const char* p) {
for(;*p;p++) {
putchar(*p);
}
}
int main() {
print_string("Hi, mom!\n");
}
```
```asm
.text
jmp main
print_string:
#{push:print_string}
mov D, SP
add D, -1
store BP, D
mov SP, D
mov BP, SP
.file 1 "wow.c"
.loc 1 5 0
# }
.L0:
.loc 1 4 0
# putchar(*p);
mov B, BP
add B, 2
load A, B
mov B, A
load A, B
jeq .L3, A, 0
jmp .L4
.L3:
.loc 1 5 0
# }
jmp .L2
.L4:
mov B, BP
add B, 2
load A, B
mov B, A
load A, B
mov D, SP
add D, -1
store A, D
mov SP, D
putc A
add SP, 1
.L1:
.loc 1 4 0
# putchar(*p);
mov B, BP
add B, 2
load A, B
mov D, SP
add D, -1
store A, D
mov SP, D
add A, 1
mov B, BP
add B, 2
store A, B
load A, SP
add SP, 1
.loc 1 5 0
# }
jmp .L0
.L2:
#{pop:print_string}
mov SP, BP
load A, SP
add SP, 1
mov BP, A
load A, SP
add SP, 1
jmp A
.text
main:
#{push:main}
mov D, SP
add D, -1
store BP, D
mov SP, D
mov BP, SP
.loc 1 10 0
# }
.data
.L5:
.string "Hi, mom!\n"
.text
mov A, .L5
mov D, SP
add D, -1
store A, D
mov SP, D
mov A, .L6
mov D, SP
add D, -1
store A, D
mov SP, D
jmp print_string
.L6:
mov A, B
add SP, 1
#{pop:main}
exit
```
here's some example C and IREditor is loading...
Leave a Comment