E

Size: a a a
E

E

ВВ
push rbp
mov rbp, rspE
rbpВВ
ВВ
E
rsp
К примеру, перед вызовом функции ты положил в EBP какое-то значение, вызвал функцию, а после вызова твоего значения там уже нет, вместо него там какой-то указатель на стэк.push rbp, чтобы потом ещё сохранить исходный RBPE
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