# # 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: