2022-03-29 10:26:33 +03:00

42 lines
696 B
ArmAsm
Executable File

#
# entry64.S
# Lilu
#
# Copyright © 2018 vit9696. All rights reserved.
#
.text
.global _main
_main:
push %rbp
mov %rsp, %rbp
# ensure 16-byte alignment
and $0xfffffffffffffff0, %rsp
# int main(int argc, const char* argv[], const char* envp[], const char* apple[]);
push %rdi
push %rsi
push %rdx
push %rcx
call *booter(%rip)
xor %eax, %eax
pop %rcx
pop %rdx
pop %rsi
pop %rdi
mov %rbp, %rsp
pop %rbp
jmp *entrypoint(%rip)
# original entrypoint (main)
entrypoint:
.word 0xFFFF
.word 0xFFFF
.word 0xFFFF
.word 0xFFFF
# entrypoint-compatible wrapper
booter:
.word 0xFFFF
.word 0xFFFF
.word 0xFFFF
.word 0xFFFF
_end: