gpt4 book ai didi

c - GCC 更改为小于或等于

转载 作者:太空狗 更新时间:2023-10-29 14:59:14 26 4
gpt4 key购买 nike

我有以下简单的程序,我用它来刷新我对 GDB 的内存(我已经很多年没有碰过它了)。

#include <stdio.h>

int main()
{
int i;

for (i = 0; i < 10; i++)
{
printf("Hello World\n");
}

return 0;
}

我用 gcc -g for-test.c -o for-test 编译它.根据手册页,我不希望使用任何优化,因为我没有指定任何优化。

当我将其加载到 GDB 并运行 disassemble main 时, i < 10比较生成以下内容:

cmp    DWORD PTR [rbp-0x4],0x9
jle 0x4004fe <main+10>

这似乎有效地改变了 i < 10 的比较至 i <= 9 .鉴于这些是整数比较,应该没有区别,但我想知道 GCC 输出这个程序集是否有任何原因,而不是与 10 比较并在小于 (JL) 时跳转?

编辑:这是在一台配备 64 位处理器、运行 Ubuntu 和 GCC 4.6.3 和 GDB 7.4-2012.04 的机器上。

最佳答案

执行速度应该没有差异。我认为 gcc 通常会为此类比较发出 jle,并在生成的程序集中实现一致性。

关于c - GCC 更改为小于或等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718021/

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