Использование другого ассемблера (MASM, NASM, TASM и т. Д.) С GCC

Я уже некоторое время просматриваю вопросы здесь и в Интернете, и я не могу понять, возможно ли выполнять встроенную сборку с GCC, используя что-то другое, кроме GAS. Я пытаюсь выяснить, могу ли я избежать использования не только синтаксиса GAS AT&T (хотя я знаю, как использовать синтаксис Intel с GAS), но и расширенного формата asm. Хотя это не для проекта или чего-то другого, кроме моего собственного любопытства, я был бы очень признателен за любую помощь, которую могу получить (на самом деле это мой первый вопрос здесь, потому что я не мог найти на него ответа)! Кроме того, если это имеет значение, в настоящее время я использую DevC ++ (для кода C, а не C ++) в Windows.

Спасибо Том


person atomictom    schedule 08.02.2011    source источник


Ответы (2)


Вы можете связать вывод ассемблера (файл ".o" или ".obj") с вашей программой C или C ++. Поместите свой ассемблерный код в текстовый файл. Ваша IDE или make-файл соберет его так же, как любой исходный файл c. Единственная сложность - научиться взаимодействовать между двумя разными системами.

person Jay    schedule 08.02.2011
comment
Да, и будет ли это действительно встроенным или просто внешним вызовом функции ассемблера? И что вы имеете в виду, говоря, что это текстовый файл? Что IDE за меня его соберет? - person atomictom; 09.02.2011
comment
Это не совсем ответ на вопрос Использование другого ассемблера с GCC, потому что он не работает для исходных файлов со встроенной сборкой. Я думаю, что ответ @nelhage правильный (если это все еще так). - person jww; 27.09.2015

Вы не можете использовать другой синтаксис встроенной сборки с GCC. встроенная сборка реализуется GCC буквально включая сборку, которую вы пишете встроенной, с собственным (текстовым) выходом сборки, который затем отправляет gas для сборки. Поскольку GCC не знает, как изменить формат собственного вывода для передачи другому ассемблеру, вы также не можете изменить встроенную сборку.

person nelhage    schedule 08.02.2011
comment
Это не совсем так; см. этот вопрос SO: stackoverflow.com/questions/199966/ - person SpellingD; 19.06.2013