Я хочу скомпилировать этот исходный код в Windows (это просто пример):
start:
NOP
NOP
Когда я компилирую его с помощью NASM или FASM, длина выходного файла составляет 2 байта. Но когда я компилирую его с помощью ассемблера GNU (as), длина выходного файла составляет 292 байта!
Как скомпилировать файл сборки в необработанный двоичный формат (например, DOS .com) с помощью ассемблера GNU (as)?
Почему я это делаю?
Я хочу написать свою собственную простую ОС, я пишу свои коды на C (без использования каких-либо стандартных библиотек C, даже stdio.h или math.h) и конвертирую их в сборку:
gcc -S my_os.c -o my_os.asm -masm=intel
Затем я компилирую файл сборки в необработанный двоичный файл:
as my_os.asm
Затем я переименовываю a.out
(вывод ассемблера) в my_os.flp
и, наконец, запускаю свою ОС с VMWare :)
objcopy
илиsegedit
или что-то еще, чтобы скопировать нужные вам двоичные части? - person Carl Norum   schedule 13.12.2011