summary refs log tree commit diff
path: root/sys.s
diff options
context:
space:
mode:
Diffstat (limited to 'sys.s')
-rw-r--r--sys.s78
1 files changed, 78 insertions, 0 deletions
diff --git a/sys.s b/sys.s
new file mode 100644
index 0000000..9a72e16
--- /dev/null
+++ b/sys.s
@@ -0,0 +1,78 @@
+.intel_syntax noprefix
+    .global write
+    .global read
+    .global open
+    .global close
+    .global fork
+    .global real_waitid
+    .global execve
+    .global pause
+    .global mknod
+    .global dup2
+    .global chdir
+    .global mount
+    .global exit
+
+    write:
+        mov rax, 1
+        syscall
+        ret
+
+    read:
+        mov rax, 0    # syscall number for read
+        mov rdi, rdi  # file descriptor (already in rdi)
+        mov rsi, rsi  # buffer pointer (already in rsi)
+        mov rdx, rdx  # size (already in rdx)
+        syscall
+        ret
+    
+    open:
+        mov rax, 2
+        syscall
+        ret
+    
+    close:
+        mov rax, 3
+        syscall
+        ret
+
+    fork:
+        mov rax, 57
+        syscall
+        ret
+
+    real_waitid:
+        mov rax, 247
+        mov r10, rcx
+        syscall
+        ret
+
+    execve:
+        mov rax, 59
+        syscall
+
+    pause:
+        mov rax, 34
+        syscall
+
+    mknod:
+        mov rax, 133
+        syscall
+    
+    dup2:
+        mov rax, 33
+        syscall
+    
+    chdir:
+        mov rax, 80
+        syscall
+    
+    mount:
+        mov rax, 165
+        mov r10, rcx
+        syscall
+
+    exit:
+        mov rax, 60
+        syscall
+        ret