GCC LLVM在不同的CPU拱门上组装

时间:2017-08-03 16:48:41

标签: gcc assembly llvm

您好,我试图了解更多编译器; 当使用gcc -S时 它生成一个.s文件,如

    .section    __TEXT,__text,regular,pure_instructions
.macosx_version_min 10, 12
.globl  _main
.p2align    4, 0x90
_main:                                  ## @main
.cfi_startproc
## BB#0:

pushq   %rbp
Ltmp0:
.cfi_def_cfa_offset 16
Ltmp1:
.cfi_offset %rbp, -16
movq    %rsp, %rbp
Ltmp2:
.cfi_def_cfa_register %rbp
subq    $16, %rsp
leaq    L_.str(%rip), %rdi
movb    $0, %al
callq   _printf
xorl    %ecx, %ecx
movl    %eax, -4(%rbp)          ## 4-byte Spill
movl    %ecx, %eax
addq    $16, %rsp
popq    %rbp
retq
.cfi_endproc

.section    __TEXT,__cstring,cstring_literals
L_.str:                                 ## @.str
.asciz  "Hello World!\n"


.subsections_via_symbols

我的问题是:这个.s汇编文件基于特定的cpu arch生成,如x86或其cpu arch无关紧要? 如果它不相关,我们是否会在命令中添加像ARMv7s这样的cpu配置" gcc -O" ?

问题2: llvm-gcc -S生成的代码与汇编语言有很大不同;是一个cpu arch无关的LLVM IR语言?并且LLVM后端处理剩余的作业以将其转换为特定的cpu拱门?

非常感谢

0 个答案:

没有答案