Не могу добавить раздел в синтаксис FASM

У меня возникла проблема с добавлением раздела с использованием синтаксиса FASM. Я проверил на других веб-сайтах, и я уверен, что это правильный синтаксис. Я должен что-то упустить:

format elf executable 3
entry start

section '.text' readable executable

start:
mov ebx, 0
mov eax, 1
int 0x80

и FASM дает мне:

версия плоского ассемблера 1.70.03 (память 16384 килобайта) exit.asm[4]: секция '.text' читаемая исполняемая ошибка: недопустимая инструкция.

Кстати, я также не могу создать именованный сегмент, например:

segment .data

но я могу сделать:

segment readable executable

Я не могу найти объяснение этому.


person user3102158    schedule 14.12.2013    source источник


Ответы (2)


Похоже, документация FASM для ELF устарела. Вам следует посетить форумы FASM и сообщить об этом и/или спросить об этом.

Я получил это для компиляции в 1.70.03, адаптированном из примера elfexe:

format elf executable 3
entry start

segment readable executable

start:
mov     ebx,0
mov     eax,1
int     0x80
person Jens Björnhager    schedule 16.12.2013
comment
какая цифра 3 в executable 3? - person アレックス; 30.01.2017
comment
Я думаю, что 3 для Linux. - person Jens Björnhager; 30.01.2017
comment
что это означает? - person アレックス; 31.01.2017
comment
Вероятно, это идентификатор ABI ОС: refspecs.linuxbase.org/elf/gabi4+ /ch4.eheader.html#osabi - person Jens Björnhager; 31.01.2017

Ключевое слово section должно использоваться только в том случае, если результирующий ELF будет позже связан с внешними компоновщиками.

Если директива format содержит предложение executable, разрешены только директивы segment, а файл результатов может выполняться напрямую без компоновки.

Все это объясняется в конце соответствующего раздела в руководстве по FASM, глава 2.4. .4.

person johnfound    schedule 18.02.2014
comment
If the format directive contains executable clause, only segment directives are allowed -- о чем это сказано? - person アレックス; 30.01.2017