又是我。
我的程序中有很多“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/