From 7d07ff825dc7cff7ee80b04346e0d2c49a91e190 Mon Sep 17 00:00:00 2001 From: scratko Date: Sun, 31 Mar 2024 21:05:36 +0300 Subject: Initial commit --- calls.asm | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 calls.asm (limited to 'calls.asm') diff --git a/calls.asm b/calls.asm new file mode 100644 index 0000000..7d45fa7 --- /dev/null +++ b/calls.asm @@ -0,0 +1,77 @@ +global sys_write +global sys_read +global sys_errno +global sys_alloc +global sys_free +global sys_exit + +section .text + +generic_sys_call_3: + push ebp + mov ebp, esp + push ebx + mov ebx, [ebp+8] + mov ecx, [ebp+12] + mov edx, [ebp+16] + int 80h + mov edx, eax + and edx, 0fffff000h + cmp edx, 0fffff000h + jnz .okay + mov [sys_errno], eax + xor eax, eax + not eax ; -1 +.okay: pop ebx + mov esp, ebp + pop ebp + ret + +sys_write: mov eax, 4 + jmp generic_sys_call_3 +sys_read: mov eax, 3 + jmp generic_sys_call_3 + +sys_alloc: push ebp + mov ebp, esp + mov eax, 45 ; brk() + xor ebx, ebx + int 80h + mov [initial_break], eax + + mov eax, 45 + mov ebx, [initial_break] + add ebx, [ebp+8] + int 80h + cmp eax, [initial_break] + jz .error + mov eax, [initial_break] + jmp .quit +.error: mov eax, -1 +.quit: mov esp, ebp + pop ebp + ret + +sys_free: push ebp + mov ebp, esp + mov eax, 45 + mov ebx, [ebp+8] + int 80h + mov esp, ebp + pop ebp + ret + +sys_exit: push ebp + mov ebp, esp + mov eax, 1 + mov ebx, [ebp+8] + int 80h + mov esp, ebp + pop ebp + ret + +section .bss +sys_errno resd 1 + +section .data +initial_break dd 0 -- cgit v1.2.3