52 lines
625 B
NASM
52 lines
625 B
NASM
section .text
|
|
|
|
global _start
|
|
_start:
|
|
mov rdi, 42
|
|
call main
|
|
mov rdi, rax
|
|
mov rax, 60 ; syscall: exit
|
|
syscall
|
|
|
|
global main
|
|
main:
|
|
push rbp
|
|
mov rbp, rsp
|
|
jmp .prologue
|
|
.args:
|
|
mov qword [rbp -8], rdi
|
|
.body:
|
|
mov rbx, 42
|
|
mov rcx, qword [rbp -8]
|
|
mov rax, rbx
|
|
cmp rcx, rax
|
|
sete bl
|
|
cmp bl, 0
|
|
je .Be
|
|
mov rbx, 7
|
|
mov qword [rbp -16], rbx
|
|
mov rdi, qword [rbp -16]
|
|
mov rax, rsp
|
|
sub rsp, 8
|
|
and rsp, -16
|
|
mov [rsp], rax
|
|
call main
|
|
pop rsp
|
|
mov rbx, rax
|
|
mov rax, rbx
|
|
jmp .epilogue
|
|
jmp .PHI4
|
|
.Be:
|
|
lea rax, main
|
|
jmp .epilogue
|
|
.PHI4:
|
|
.epilogue:
|
|
pop rbx
|
|
add rsp, 16
|
|
pop rbp
|
|
ret
|
|
.prologue:
|
|
sub rsp, 16
|
|
push rbx
|
|
jmp .args
|