将c代码转换为x86程序集的简便方法?

是否有一种简单的方法(如免费程序)可以将c / c ++代码转换为x86程序集?

我知道任何c编译器都做了非常类似的事情,我可以编译c代码,然后反汇编编译的可执行文件,但这有点过分,我想要的只是转换几行代码。

有谁知道一些程序可以做到这一点?

编辑:我知道GCC编译器这样做,但它是AT&T语法,我正在寻找英特尔语法(不确定它是否称为英特尔语法)。 AT&T语法看起来有点像胡言乱语,有些命令以相反的顺序使用操作数,而不是我习惯的方式,它可能会让人感到困惑。

Gcc可以使用-S开关来实现它,但是在语法上它会变得令人作呕。

GCC可以使用以下命令行输出Intel语法汇编:

 gcc -S input.c -o output.asm -masm=intel 

如果在命令行上传递-S选项,gcc将生成程序集。

Microsoft Visual C ++将对/FAs选项执行相同操作。

lcc编译器是一个多平台交叉编译器。 您可以通过它来生成英特尔语法汇编代码

 lcc -S -Wf-target=x86/win32 foo.c 

我发现lcc汇编代码比gcc吐出的内容更容易阅读。

正如您所说,您的编译器已经在执行此操作,并且很可能在组装之前可以选择停止。

对于GCC,添加-S标志。

 gcc -S xc cat xs 

编辑:如果您的计划很短,您可以使用https://gcc.godbolt.org/上的在线服务。

如果您使用gcc作为编译器,则可以使用-S选项进行编译以生成汇编代码。 请参阅http://www.delorie.com/djgpp/v2faq/faq8_20.html

正如许多人所指出的,大多数编译器都会这样做。 如果您不喜欢语法,那么awk或sed的一些工作应该能够翻译。 或者如果没有一个程序可以为你编写那个已经写过的地方,我会感到惊讶。

在VC ++中,以下命令可用于列出汇编代码。

cl / FAs ac

请注意,每当您知道使用asm volatile所涉及的堆栈时,每个架构都有自己独特的名称,甚至构建方式也不同