是否有一种简单的方法(如免费程序)可以将c / c ++代码转换为x86程序集?
我知道任何c编译器都做了类似的事情,我可以编译c代码,然后反汇编编译的可执行文件,但这有点过分,我想要的只是转换几行代码。
是否有人知道某些程序可以做到这一点?
编辑:我知道GCC编译器会这样做,但它是AT& T语法,我正在寻找英特尔语法(不确定它是否称为英特尔语法)。 AT& T语法对我来说有点像胡言乱语,有些命令以相反的顺序使用操作数,而不是我习惯的方式,它可能会让人感到困惑。答案 0 :(得分:44)
GCC可以使用以下命令行输出Intel语法汇编:
gcc -S input.c -o output.asm -masm=intel
答案 1 :(得分:13)
-S
选项,gcc将生成程序集。
Microsoft Visual C ++将对/FAs
选项执行相同的操作。
答案 2 :(得分:12)
Gcc可以使用-S开关来实现,但是在语法方面会很难看。
答案 3 :(得分:7)
lcc
编译器是一个多平台交叉编译器。您可以通过
lcc -S -Wf-target=x86/win32 foo.c
我发现来自lcc
的汇编代码比gcc
现在吐出的内容更容易阅读。
答案 4 :(得分:3)
您的编译器已按照您的说法进行操作,并且很可能在组装之前可以选择停止。
对于GCC,添加-S
标志。
gcc -S x.c
cat x.s
修改:如果您的计划很短,可以使用https://gcc.godbolt.org/上的在线服务。
答案 5 :(得分:1)
如果您使用gcc作为编译器,则可以使用-S选项进行编译以生成汇编代码。见http://www.delorie.com/djgpp/v2faq/faq8_20.html
答案 6 :(得分:0)
许多人指出大多数编译器都会这样做。如果您不喜欢语法,那么awk或sed的一些工作应该能够翻译。或者,如果没有一个程序可以为你编写那个已经写过的地方,我会感到惊讶。
答案 7 :(得分:0)
在VC ++中,可以使用以下命令列出汇编代码。
cl / FAs a.c
答案 8 :(得分:0)
通知 每个架构都有自己独特的名称,甚至构建不同 现在,当您使用 asm volatile 了解所涉及的堆栈时 将是一个完美的解决方案