global _start ; NOTE: assumes program loader has put argc, argv, envc, envp on stack section .text _start: xor rbp,rbp ; base pointer undefined: set to 0 mov r9,rdx ; 6th arg: function to register with atexit() pop rsi ; 2nd arg: argc mov rdx,rsp ; 3rd arg: argv and rsp,$-16 ; align stack pointer to 16 bytes mov $_fini,r8 ; 5th arg: fini mov $_init,rcx ; 4th arg: init mov $main,rdi ; 1st arg: main call rt·boot ; int boot( ; int(*main)(int,char*[],char*[]), ; int argc, ; char *argv[], ; init, fini, atexit); .loop: jmp .loop ; should never reach...