From cd646947074a1793d2d9d7ba556853f92be0bab2 Mon Sep 17 00:00:00 2001 From: Nicholas Tay Date: Mon, 23 Oct 2023 21:34:30 +1100 Subject: Factor non-linux parts out --- pasmgen-linux.asm | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 pasmgen-linux.asm (limited to 'pasmgen-linux.asm') diff --git a/pasmgen-linux.asm b/pasmgen-linux.asm new file mode 100644 index 0000000..56113e6 --- /dev/null +++ b/pasmgen-linux.asm @@ -0,0 +1,75 @@ +format ELF64 executable + +segment readable executable + +main: + ;; No arg preload case + cmp [rsp], word 1 + jne argparse + + mov r8, qword 3 + mov r9, qword 2 + mov r10, qword 3 + + jmp generate + +argparse: + ;; Check args (need 3) + cmp [rsp], word 3 + jle fail + + ;; load arg1 + mov r8, [rsp+16] + mov r8, [r8] + and r8, 0xFF + sub r8, 48 + + ;; load arg2 + mov r9, [rsp+24] + mov r9, [r9] + and r9, 0xFF + sub r9, 48 + + ;; load arg3 + mov r10, [rsp+32] + mov r10, [r10] + and r10, 0xFF + sub r10, 48 + + jmp generate + +ok: + ;; Write + mov rdi, 1 ;; stdout + mov rdx, rsi + mov rsi, out_buf + mov rax, 0x01 + syscall + + ;; Exit (code 0) + mov rdi, 0 + mov rax, 0x3c + syscall + +fail: + ;; Write + mov rdi, 1 ;; stdout + mov rsi, usage + mov rdx, usage_len + mov rax, 0x01 + syscall + + ;; Exit 1 + mov rdi, 1 + mov rax, 0x3c + syscall + + +include 'pasmgen.inc' + + +segment readable writeable + +include 'constants.inc' + +out_buf rb 64 -- cgit