Как бы я ни гуглил, я не могу найти (относительно) простую инструкцию по установке GNU Assembler на Mac.
Я знаю, что могу использовать gcc -c
(Apple Clang на Mac) для сборки файлов .s
/.S
, но я хочу использовать настоящий GNU Binutils as
.
Как бы я ни гуглил, я не могу найти (относительно) простую инструкцию по установке GNU Assembler на Mac.
Я знаю, что могу использовать gcc -c
(Apple Clang на Mac) для сборки файлов .s
/.S
, но я хочу использовать настоящий GNU Binutils as
.
yasm
работает на Mac OSX (я получил его от Homebrew) и имеет синтаксический анализатор GNU as
, который можно включено с помощью -p gas
(может потребоваться также добавить -r gas
). Он не на 100% завершен, но охватывает почти все. Он может выводить в различные форматы объектов (если необходима кросс-компиляция), и, на мой взгляд, это довольно круто. Вы также можете использовать синтаксис NASM (который полностью поддерживается), используя -p nasm
(опять же, может понадобиться -r nasm
).
Извините за некропостинг, но это все еще актуальный вопрос, и я считаю, что на него нужен приемлемый ответ.
gobjdump
. Есть ли аналогичная сборка gas
? У меня нет Mac, поэтому я могу проверить его. (Но да, +1 для YASM, хорошая идея. К сожалению, он не обновлялся; он не поддерживает инструкции AVX512. Но если вам это не нужно, это хорошо, и имеет лучшую поддержку long-NOP, чем NASM)
- person Peter Cordes; 16.07.2019
gas
с MacPorts. У меня нет AVX-512 на моем Macbook, и поэтому я не понимал, что YASM неполноценен в этом отношении. Какой ассемблер ты используешь, @PeterCordes? У NASM не так много документации или поддержки директив, как хотелось бы, а YASM вообще не выглядит обновленным (см. их GitHub github.com/yasm/yasm). Я слышал о FASM, MASM, TASM и т. д., но не пробовал.
- person Arav K.; 16.07.2019
Ассемблер GNU нельзя (пока) использовать для создания собственных объектных файлов (формата Mach-O). Но вы, конечно, можете использовать его для кросс-ассемблирования для какого-то неродного формата объекта, если это то, что вы хотите.
Ассемблер gnu уже установлен на вашем Mac (при условии, что вы установили пакет инструментов разработчика). Если вы хотите избежать XCode, вы можете вызвать его из командной строки с помощью as
или с помощью препроцессора с помощью gcc yourfile.s $(OPTIONS)
.
Редактировать: as
теперь указывает на ассемблер clang; на момент написания этого ответа он указывал на (сборку Apple) ассемблер GNU.
.S
имен файлов, а не .s
. IDK об Apple clang (это то, что gcc
работает в MacOS в наши дни!).
- person Peter Cordes; 16.07.2019
Возможно, as
вместо gas
? Если вы хотите использовать газ в качестве команды, выполните это: echo "alias gas=as" >> $HOME/.profile
Он был установлен на моем Mac Lion, когда я открыл терминал и набрал его. Возможно, это произошло из-за MacPorts и/или XCode, как упоминалось в комментариях к предыдущему ответу.
as myfile.s
должен сделать это за вас. Так должноgcc myFile.s
. - person Carl Norum   schedule 11.11.2009