Ответ 1
Gcc может сделать это с помощью ключа -S, но он будет отвратительно уродливым в синтаксисе & t.
Есть ли простой способ (например, бесплатная программа), который может скрывать код c/С++ для сборки x86?
Я знаю, что любой компилятор c делает что-то очень похожее и что я могу просто скомпилировать код c, а затем разобрать исполняемый исполняемый файл, но такого рода переполнение, все, что я хочу, - это преобразовать несколько строк кода.
Кто-нибудь знает какую-нибудь программу, которая может это сделать?
EDIT: Я знаю, что компилятор GCC делает это, но это синтаксис AT & T, и я ищу синтаксис Intel (не уверен, что он называется синтаксисом Intel или нет). Синтаксис AT & T для меня немного похож на тарабарщину, а некоторые команды используют операнды в обратном порядке, а не как я привык, и это может стать очень запутанным.
Gcc может сделать это с помощью ключа -S, но он будет отвратительно уродливым в синтаксисе & t.
GCC может выводить сборку синтаксиса Intel, используя следующую командную строку:
gcc -S input.c -o output.asm -masm=intel
gcc генерирует сборку, если вы передадите ей опцию -S
в командной строке.
Microsoft Visual С++ сделает то же самое с опцией /FAs
.
Компонент lcc
- это мультиплатформенный кросс-компилятор. Вы можете получить его для создания кода сборки синтаксиса Intel на
lcc -S -Wf-target=x86/win32 foo.c
Я нахожу код сборки из lcc
значительно проще для чтения, чем то, что gcc
выплевывает в наши дни.
Ваш компилятор уже делает это, как вы заявили, и, скорее всего, у него будет возможность остановиться перед сборкой.
Для GCC добавьте флаг -S
.
gcc -S x.c
cat x.s
Изменить: Если ваша программа довольно короткая, вы можете использовать онлайн-сервис https://gcc.godbolt.org/.
Если вы используете gcc как компилятор, вы можете скомпилировать с помощью опции -S для создания кода сборки. см. http://www.delorie.com/djgpp/v2faq/faq8_20.html
Как отмечают многие, большинство компиляторов это сделает. Если вам не нравится синтаксис, немного работы с awk или sed должны быть в состоянии перевести. Или я был бы удивлен, если бы не была программа, которая сделала бы этот бит для вас уже написанным где-то.
В VС++ для отображения кода сборки можно использовать следующую команду.
cl/FAs a.c
уведомления каждая архитектура имеет свои уникальные имена и даже строит по-разному теперь, когда вы знаете, что используемые стеки используют asm volatile было бы идеальным решением