summaryrefslogtreecommitdiff
path: root/04b/in04b
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-01-07 11:07:06 -0500
committerpommicket <pommicket@gmail.com>2022-01-07 11:07:06 -0500
commit519069a89df7f2f704b9ba7052fc80660817115f (patch)
tree3713f912b9cb874775b149c009b51ab0bb1877df /04b/in04b
parent4cd2b7047c19e45dc2e664bb6666ee1f288b126c (diff)
rename 04b => 04, better 04 README
Diffstat (limited to '04b/in04b')
-rw-r--r--04b/in04b133
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