Компоновка и линковка
При стандартной компиляции проекта создается полноценный ELF файл, происходит выравнивание по границам страниц памяти. При использовании указателя global main подключается стартовый код стандартной библиотеки C.
Точки входа.
Точка входа определяется значением global <что-то> СписокВарианты точек входа.
| Тип программы | Рекомендуемая точка входа | Компиляция |
|---|---|---|
| Самостоятельная Linux | _start | ld |
| С использованием libc | main | gcc |
| GUI Windows | WinMain | Visual Studio |
| DLL Windows | DllMain | Visual Studio |
| Ядро ОС | kmain | специальный линкер |
| Пользовательская | любое имя | ld -e имя |
Варианты компиляции
Команды консоли
nasm -f elf64 hello.asm -o hello.o
ld -o hello hello.o
В случае использования точки входа _start
make файл
hello: hello.o
gcc -o hello hello.o -no-pie
hello.o: hello.asm
nasm -f elf64 -g -F dwarf hello.asm -l hello.lst
Компилирование происходит командой make,