gpt4 book ai didi

cl.exe 产生奇怪的汇编代码

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:44 41 4
gpt4 key购买 nike

我编译了这段 C 代码:

void foo() {
int i = 0;
i = 0;
i = 0;
}

我得到了这个:

push ebp
mov ebp,esp
push ecx
mov dword ptr ss:[ebp-4],0
mov dword ptr ss:[ebp-4],0
mov dword ptr ss:[ebp-4],0
mov esp,ebp
pop ebp
retn

我的问题是为什么会有push ecx?为什么没有 sub esp,4 或其他东西来在堆栈上腾出空间?未使用编译器选项。

最佳答案

任一方法都会在堆栈上提供 4 个字节的可用空间,push 会在 sub 上节省几个字节。也许编译器作者决定通过压入寄存器来优化这种情况。

关于cl.exe 产生奇怪的汇编代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566262/

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