Как скомпилировать файл asm и выполнить его на Linux?

Я создал файл asm файл и скомпилировал его с помощью команды

 nasm file -o outfile

Как теперь выполнить программу в терминале? (Запустить outfile)?


Ответы (2 шт):

Автор решения: Dr. Andrey Belkin

Как и все программы в Linux:

./outfile

или

<path_to_file>/outfile
→ Ссылка
Автор решения: Fat-Zer

По умолчанию nasm (обычно) компилирует в bin-формат, что равносильно обычному плоскому коду. Вообще говоря, такие файлы не являются исполняемыми практически ни для какой ОС. Но если файл сформирован специальным образом, в начале asm-файла пропущен блок в 256 байт т.е. в начало добавлено:

org     0x100

То этот файл будет эквивалентен COM-формату DOS. Его можно запустить в эмуляторе DOS'а, например dosbox.


Чтобы скомпилировать исполняемый файл для linux нужно явно указать формат:

nasm file -f elf64 -o file.o # создаст объектный файл (указать elf32 для x86)
ld -s file.o -o outfile      # слинкует объектный файл в исполняемый

Но для этого код должен быть написан непосредственно для linux (использовать его системные вызовы и т.п.).

Запускать его можно как обычно:

./outfile

Список доступных форматов можно посмотреть с помощью nasm -hf

→ Ссылка