-5
A
回答
6
没有指定C++标准应该做什么。但我会说任何体面的编译器都会优化这些代码,甚至不会留下nop
指令。
2
现代编译器为了某种目的发出类似nop
的指令 - 通常用于对齐(在许多架构中,如果目标与16字节对齐,分支会更快地执行)或等待某些操作完成(IARC上的IIRC你必须在使用某些操作码的结果之前等待一定数量的周期,所以要么你有其他的事情要做,要么你必须发射nop
s)。
现在,无论我们是在这种情况下还是最有可能没有nop
将被发射。对于这样的函数,您可以期待定期的堆栈框架设置,随后清理未优化的版本,或者在优化过的版本中使用普通的ret
(加上堆栈清理代码,如果调用约定规定的话)。更好的是,如果编译器足够智能并且在编译呼叫站点时已知函数的定义(所以,这是一个static
函数,启用了一个inline
或启用链接时间码生成),则该呼叫可能是完全省略,并且可能在最终的可执行文件中没有保留功能代码的踪迹。
相关问题
- 1. 将NKDbgPrintfW编译为发布版本中的nop吗?
- 2. 函数编译隔离指令 - AngularJS
- 3. 从函数外部调用函数时不返回值吗?
- 4. Android编译时间指令
- 5. 调用$编译自定义指令
- 6. 在调用另一个函数后立即返回函数
- 7. Python编码(调用函数/返回值)
- 8. 角度指令回调函数
- 9. 将指令中的值传递给编译函数
- 10. 使用回调函数返回函数
- 11. 为什么不能在指令的链接函数中编译?
- 12. 函数指针 - 编译时间错误
- 13. 当从rebol调用时,从dll函数返回的指针
- 14. 返回布展仅式编译即使拷贝构造函数是不可用
- 15. 从函数返回函数而不调用返回函数
- 16. 当调用函数时,它返回undefined
- 17. AngularJS - 指令来指示函数调用
- 18. 在html上多次调用多次使用相同指令的编译函数?
- 19. Angularjs指令编译
- 20. 为什么来自被调用函数的指针不会将该值返回给调用函数?
- 21. 函数返回无,即使我有回到命令
- 22. Monotouch编译指令如果调试
- 23. 从函数返回指针并用指针递归调用函数 - BST
- 24. 函数返回Ajax调用
- 25. 返回函数调用?
- 26. 我们可以说“将函数指针作为参数传递给函数称为回调函数”吗?
- 27. 当使用gcc编译时,tao_idl返回未指定错误
- 28. 无法调用返回指针的函数指针
- 29. 调用函数作为指针从ctypes中的其他函数返回
- 30. 返回值时的函数指针
这对你来说是一件相当容易的事情,不是吗? –
不幸的是,我不知道该怎么做... – Funkyguy
为什么应该有一个'nop',哪里可以没有? – YSC