gpt4 book ai didi

c - GCC 热补丁?

转载 作者:太空狗 更新时间:2023-10-29 15:06:30 25 4
gpt4 key购买 nike

当我编译这段代码时

unsigned char A[] = {1, 2, 3, 4};

unsigned int
f (unsigned int x)
{
return A[x];
}

gcc 输出

mov edi, edi
movzx eax, BYTE PTR A[rdi]
ret

在 x86_64 机器上。

问题是:为什么 nop 指令 (mov edi, edi) 在那里?

我正在使用 gcc-4.4.4。

最佳答案

在 64 位模式下,mov edi, edi 不是空操作。它所做的是将 rdi 的前 32 位设置为 0。

这是一般事实的特例,即在 64 位模式下,所有 32 位操作都会清除目标寄存器的前 32 位。 (这比让它们保持不变允许更高效的 CPU,并且可能也更有用。)

关于c - GCC 热补丁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121053/

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