diff options
author | pommicket <pommicket@gmail.com> | 2022-01-06 13:53:52 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-01-06 13:53:52 -0500 |
commit | 8c6b19fdd3a8bca886692056b8f4942b889323c9 (patch) | |
tree | 423b695be1d008205c289d83ae5fd7f48a208c4f /04b/in04b | |
parent | b66a2dbe6b87e75fbb54beda05c00c9f13f84f2c (diff) |
hello world!
Diffstat (limited to '04b/in04b')
-rw-r--r-- | 04b/in04b | 122 |
1 files changed, 116 insertions, 6 deletions
@@ -43,8 +43,123 @@ ; <term> < <term> (left shift) ; <term> > <term> (unsigned right shift) -main(46) ; hello +syscall(1, 1, .str_hw, 14) +syscall(0x3c, 42) + +:str_hw + byte 'H + byte 'e + byte 'l + byte 'l + byte 'o + byte ', + byte 32 + byte 'w + byte 'o + byte 'r + byte 'l + byte 'd + byte '! + byte 10 + +:syscall +function + ; 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 + global x global y ;123 global z @@ -59,11 +174,6 @@ function function return -123 -:syscall -function - ; ... - byte 0x0f - byte 0x05 :strlen function |