E

Size: a a a
E
E
ВВ
push rbp
mov rbp, rsp
E
rbp
ВВ
ВВ
E
rsp
К примеру, перед вызовом функции ты положил в EBP
какое-то значение, вызвал функцию, а после вызова твоего значения там уже нет, вместо него там какой-то указатель на стэк.push rbp
, чтобы потом ещё сохранить исходный RBP
E
push eaxИ теперь ты можешь получить аргумент, относительно EBP+8.
call func
func:
push ebp
mov ebp, esp
push ebx
push ecx
push edx
push ebxА если регистров ещё больше - r0-r15, тогда смещение возрастает, становится неудобно.
push ecx
push edx
mov eax, dword[esp+12]
ВВ
E
extern
, с самописной импорт-таблицей на либцformat ELF
Когда прописываешь этот формат - тебе будет доступны extern
Но тогда на выходе будет обьектный файл, и его нужно будет скормить линковщику. В общем, как с NASMВВ
push rbp
mov rbp, rsp
xor rsi, rsi
xor rax, rax
lea rdi, [msg]
mov esi, 1
call printf
ВВ
ВВ
E
format ELF
, и использовать extern
:E
format ELF
у тебя будет на выходе не исполняемый красивый файл, который ты получаешь сейчас, а обьектный файл, как с NASM. Этот обьектник нужно будет передавать в линковщикВВ
E