diff options
author | pommicket <pommicket@gmail.com> | 2022-01-07 11:07:06 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-01-07 11:07:06 -0500 |
commit | 519069a89df7f2f704b9ba7052fc80660817115f (patch) | |
tree | 3713f912b9cb874775b149c009b51ab0bb1877df /04b/in04b | |
parent | 4cd2b7047c19e45dc2e664bb6666ee1f288b126c (diff) |
rename 04b => 04, better 04 README
Diffstat (limited to '04b/in04b')
-rw-r--r-- | 04b/in04b | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/04b/in04b b/04b/in04b deleted file mode 100644 index 2b85900..0000000 --- a/04b/in04b +++ /dev/null @@ -1,133 +0,0 @@ -main() - -function main - puts(.str_hello_world) - putc(10) ; newline - syscall(0x3c, 0) - -:str_hello_world - string Hello, world! - byte 0 - -function strlen - argument s - local c - local p - p = s - :strlen_loop - c = *1p - if c == 0 goto strlen_loop_end - p += 1 - goto strlen_loop - :strlen_loop_end - return p - s - -function putc - argument c - local p - p = &c - syscall(1, 1, p, 1) - return - -function puts - argument s - local len - len = strlen(s) - syscall(1, 1, s, len) - return - -function syscall - ; I've done some testing, and this should be okay even if - ; rbp-56 goes beyond the end of the stack. - ; mov rax, [rbp-16] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xf0 - byte 0xff - byte 0xff - byte 0xff - ; mov rdi, rax - byte 0x48 - byte 0x89 - byte 0xc7 - - ; mov rax, [rbp-24] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xe8 - byte 0xff - byte 0xff - byte 0xff - ; mov rsi, rax - byte 0x48 - byte 0x89 - byte 0xc6 - - ; mov rax, [rbp-32] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xe0 - byte 0xff - byte 0xff - byte 0xff - ; mov rdx, rax - byte 0x48 - byte 0x89 - byte 0xc2 - - ; mov rax, [rbp-40] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xd8 - byte 0xff - byte 0xff - byte 0xff - ; mov r10, rax - byte 0x49 - byte 0x89 - byte 0xc2 - - ; mov rax, [rbp-48] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xd0 - byte 0xff - byte 0xff - byte 0xff - ; mov r8, rax - byte 0x49 - byte 0x89 - byte 0xc0 - - ; mov rax, [rbp-56] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xc8 - byte 0xff - byte 0xff - byte 0xff - ; mov r9, rax - byte 0x49 - byte 0x89 - byte 0xc1 - - ; mov rax, [rbp-8] - byte 0x48 - byte 0x8b - byte 0x85 - byte 0xf8 - byte 0xff - byte 0xff - byte 0xff - - ; syscall - byte 0x0f - byte 0x05 - - return |