2011-02-08 4 views
4

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

Спасибо, Том

ответ

2

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

+0

Да, и будет ли это действительно «встроенным» или просто быть вызовом внешней функции для функции ассемблера? И что вы подразумеваете под словом в текстовом файле? Что IDE соберет его для меня? – atomictom

+0

Это не совсем ответ на * «Использование другого ассемблера с GCC» *, потому что он не работает для исходных файлов с встроенной сборкой. Я думаю, что ответ @ nelhage правильный (если это все еще так). – jww

1

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

+0

Это не совсем так; см. этот вопрос SO: http://stackoverflow.com/questions/199966/how-do-you-use-gcc-to-generate-assembly-code-in-intel-syntax – SpellingD