gpt4 book ai didi

C虚拟操作

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:14 25 4
gpt4 key购买 nike

我无法想象编译器在没有左值时会做什么,例如:数量>>1;我的直觉告诉我,由于优化,编译器将从编译中丢弃这一行,如果删除优化会发生什么?它是否使用寄存器来进行操作?或者它的行为是否像函数调用一样,因此参数被传递到堆栈,并且所使用的内存被标记为已释放?还是将其转换为 NOP 操作?我可以使用 VS++ 调试器查看发生了什么吗?感谢您的帮助。

最佳答案

在你给出的例子中,它放弃了操作。它知道操作没有副作用,因此不需要发出代码来执行语句来生成正确的程序。如果禁用优化,编译器可能仍会发出代码。如果您启用优化,编译器也可能仍然会发出代码——它并不完美。

您可以使用 Microsoft 编译器的 /FAsc 命令行选项查看编译器发出的代码。该选项创建一个列表文件,其中包含编译器的目标代码输出和相关的源代码。

您还可以在调试器中使用“查看反汇编”来查看编译器生成的代码。

在优化代码上使用“ View 反汇编”或 /FAsc,我希望不会看到编译器发出的代码。

关于C虚拟操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15305096/

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