summary refs log tree commit diff
path: root/quine.asm
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2025-11-08 18:53:03 -0800
committerIrene Knapp <ireneista@irenes.space>2025-11-08 18:53:03 -0800
commitb4a09996fae3047f04e6171e448bbfeecfc27b7d (patch)
tree10de52d92aeac8a7632027c4b496570fb742aaa0 /quine.asm
parent9dbf42f2138b93987b42069dd3aee4d6fd7917fd (diff)
implement sys_exit and sys_write
Force-Push: yes
Change-Id: Idbdfe11a5ba4107c90065f015705708030684439
Diffstat (limited to 'quine.asm')
-rw-r--r--quine.asm18
1 files changed, 14 insertions, 4 deletions
diff --git a/quine.asm b/quine.asm
index 4eb5017..10bb682 100644
--- a/quine.asm
+++ b/quine.asm
@@ -2355,13 +2355,23 @@ cold_start:
   ; code if you really need to know).
   dq litstring, "sys_exit", 0, early_create, early_self_codeword, early_here
   dq fetch
-  ; TODO
-  dq lit, 8, packalign, early_here_store
+  dq lit, 60, rax, mov_reg64_imm64
+  dq rdi, pop_reg64
+  dq syscall
+  dq hlt
+  dq pack_next, lit, 8, packalign, early_here_store
 
   dq litstring, "sys_write", early_create, early_self_codeword, early_here
   dq fetch
-  ; TODO
-  dq lit, 8, packalign, early_here_store
+  dq rcx, pop_reg64
+  dq rdx, pop_reg64
+  dq rsi, push_reg64
+  dq lit, 1, rax, mov_reg64_imm64
+  dq lit, 1, rdi, mov_reg64_imm64
+  dq rcx, rsi, mov_reg64_reg64
+  dq syscall
+  dq rsi, pop_reg64
+  dq pack_next, lit, 8, packalign, early_here_store
 
   dq litstring, "emitstring", early_create, early_self_codeword, early_here
   dq fetch