又是我。
我的程序中有很多“add esp, 4”,我正在尝试减小它的大小。是否有任何更小的指令可以替代“add esp, 4”?
pop edx
或者您不介意破坏的任何其他整数寄存器。
这就是现代编译器实际上所做的 https://stackoverflow.com/questions/37773787/why-does-this-function-push-rax-to-the-stack-as-the-first-operation(clang,有时是 gcc),因为它通常是现代 CPU 上性能和代码大小的最佳选择。
An add esp,4
之后call
会强制 CPU 的堆栈引擎在执行实际操作之前插入堆栈同步微指令add
。如果您不直接修改 use ESP,除非在下一个入栈/弹出/调用/ret 之前使用堆栈指令(例如,作为寻址模式的一部分),那么您可以使用以下方式保存 uoppop
.
如果最近运行任何其他堆栈指令,则堆栈内存的高速缓存行在高速缓存中将很热(使加载成本降低)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)