gpt4 book ai didi

c - clang 和 gcc 的区别

转载 作者:太空狗 更新时间:2023-10-29 16:33:16 27 4
gpt4 key购买 nike

<分区>

我在不同的项目中使用了这两种编译器。

它们在代码处理和输出生成方面有何不同?例如,gccclang 都有用于优化的 -O2 选项。他们在优化代码方面是否以相同的方式(高级)运行?我做了一点测试,例如,如果我有以下代码:

int foo(int num) {
if(num % 2 == 1)
return num * num;
else
return num * num +1;
}

以下是带有 clang 和带有 -O2 的 gcc 的输出程序集:

----gcc 5.3.0-----                              ----clang 3.8.0----
foo(int): foo(int):
movl %edi, %edx movl %edi, %eax
shrl $31, %edx shrl $31, %eax
leal (%rdi,%rdx), %eax addl %edi, %eax
andl $1, %eax andl $-2, %eax
subl %edx, %eax movl %edi, %ecx
cmpl $1, %eax subl %eax, %ecx
je .L5 imull %edi, %edi
imull %edi, %edi cmpl $1, %ecx
leal 1(%rdi), %eax setne %al
ret movzbl %al, %eax
.L5: addl %edi, %eax
movl %edi, %eax retq
imull %edi, %eax
ret

可以看出输出有不同的指令。所以我的问题是,在不同的项目中,其中一个是否比另一个有优势?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com