C语言 在哪里可以找到有关此 .s 文件中代码的文档?



我通过运行以下命令生成了下面的汇编程序

clang -s hello.c

其中hello.c是以下内容的文件名:

#include <stdio.h>
main() {
printf("Hellon");
}

汇编程序hello.s

.section  __TEXT,__text,regular,pure_instructions
.build_version macos, 10, 14  sdk_version 10, 14
.globl  _main                   ## -- Begin function main
.p2align  4, 0x90
_main:                                  ## @main
.cfi_startproc
## %bb.0:
pushq %rbp
...

您可以在 GAS 手册中找到文档(clang/LLVM 使用相同的语法,包括指令(。 https://sourceware.org/binutils/docs/as/

另请参阅 https://stackoverflow.com/tags/x86/info 和 https://stackoverflow.com/tags/att/info 中的链接,了解有关 x86-64 AT&T 语法的更多信息。

Clang/LLVM可以使用Intel语法,就像GCC一样,但指令不会改变。clang --x86-asm-syntax=intel,或者可能-masm=intel与GCC兼容。

clang或LLVM手册中也可能有一些内容。 (但不要将其与LLVM-IR汇编语言混淆:LLVM内部表示的asm语法。 通过快速搜索,我没有找到任何关于clang如何处理 GAS 指令的 LLVM 文档。


.globl _main不是标签本身。 请注意,它在对齐填充之前。 它只是符号的属性修饰符_main.

_main:是输出文件中应用标签的位置。

要了解说明,请参阅如何从 GCC/clang 程序集输出中删除"噪音"?了解如何去除不相关的指令。

我认为它被称为GNU汇编程序,我在这里找到了它的文档:https://www.sourceware.org/binutils/docs-2.12/as.info/index.html。

相关内容

最新更新