optimization - 小于 "add esp, 4"的指令

标签 optimization assembly x86

又是我。

我的程序中有很多“add esp, 4”,我正在尝试减小它的大小。有没有更小的指令可以代替“add esp, 4”?

最佳答案

pop edx  

或者您不介意销毁的任何其他整数寄存器。

This is what modern compilers actually do (clang,有时是 gcc),因为它通常是现代 CPU 上性能和代码大小的最佳选择。

调用之后的add esp,4将强制CPU的堆栈引擎在执行实际的add之前插入堆栈同步uop 。如果您不直接修改 use ESP,除非在下一次入栈/弹出/调用/ret 之前使用堆栈指令(例如,作为寻址模式的一部分),则您可以使用 pop 保存微指令。

如果最近运行任何其他堆栈指令,堆栈内存的高速缓存行将在高速缓存中变热(使加载成本降低)。

关于optimization - 小于 "add esp, 4"的指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038416/

相关文章:

c++ - 使用来自 clang 的进位代码产生良好的添加

assembly - 帮助理解 RedCode

c++ - 在内联汇编代码中使用 C++ 命名空间

assembly - asm中的ADC指令

optimization - 您如何从 SSE 中获得最大速度?

multithreading - Mahout优化: Multithreading TopItems. getTopUsers()和TopItems.getTopItems()

optimization - 如何使用值作为 redis 中的列表对这个哈希进行建模?

c# - 优化基本 XNA 引擎中的绘图调用

c - 从 gcc 中的内联汇编引用全局变量

c - 对于简单的二进制减法,SSE 的最大理论加速是多少?