如这个问题所示,使用g,我可以< code > g-S-masm = Intel test . CPP 。另外,使用clang,我可以执行< code>clang -S test.cpp,但是clang不支持< code>-masm=intel(编译期间未使用的< code >警告参数:-masm=intel)。我如何用clang得到intel语法?
假设您可以让Clang发出正常的LLVM字节码,然后您可以使用llc编译为汇编语言,并使用其--x86-asm-syn就=intel
选项以Intel语法获取结果。
从clang r208683(clang 3.5)开始,它理解-masm=intel
。所以,如果你的铿锵声足够新鲜,你可以使用它。
正如@thakis在下面提到的,Clang (3.5)的新版本接受了< code>-masm=intel参数。
对于旧版本,这应该会发出带有英特尔语法的汇编代码:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
您可以使用<code>-mllvm
我费了很大的劲才让它运转起来: 我尝试了以下方法: 我会得到: 显然,编译器将< code>%0替换为< code>%register,但仍然保留< code>'%'... 因此,我决定将 % 替换为 ,将 替换为 : 并得到结果错误: 我怀疑编译器优化了东西并内联了被调用的函数(所以没有雷特),但仍然不知道我该怎么做。 注意:我不能把编译器从clang改成gcc,因为用clang 11的不是我而
我试图翻译成x86汇编,以帮助我更好地理解在x86汇编中编码的概念,我觉得自己被困在了如何开始编写这段代码上。
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 对我来说,英特尔语法更容易阅读。如果我只关注Intel语法来遍历汇编林,我会错过任何事情吗?我有什么理由要切换到AT&T(除了能够读取其他人的AT&T程序集之外
似乎默认情况下,Clang采用了GNU汇编程序语法。 如何用Clang编译一个汇编文件使用ARM语法像this(指令)和this(指令)?
问题内容: 每次与Hotspot一起使用时,都不得不烦恼我,不得不阅读可怕的AT&T语法。 有没有办法告诉它使用英特尔语法? 问题答案: 您所需要做的就是将一些选项解析到dis-asm.h和binutils代码上 对于Intel Asm(我也更喜欢),只需添加以下内容 如果您需要组合选项,请像这样用逗号分隔 任何未被识别为hsdis选项的内容都将被提供给反汇编程序,这些选项与您从中看到的选项相同
我需要一个示例代码来学习如何从clang::ASTContext生成C代码。 我用c代码创建了ast,并在AST中做了一些更改,现在我想再次生成代码。