Как скомпилировать файл asm и выполнить его на Linux?
Я создал файл asm файл и скомпилировал его с помощью команды
nasm file -o outfile
Как теперь выполнить программу в терминале? (Запустить outfile)?
Ответы (2 шт):
Как и все программы в Linux:
./outfile
или
<path_to_file>/outfile
По умолчанию 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