gpt4 book ai didi

linux - 减少汇编指令数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:54 27 4
gpt4 key购买 nike

我想(手动)减少 Linux 汇编文件中的指令数。这基本上是通过在抽象语法树中搜索预定义的缩减来完成的。

例如:

pushl <reg1>
popl <reg1>

将被删除,因为它没有意义。

或者:

pushl <something1>
popl <something2>

将成为:

movl <something1>, <something2>

我正在寻找涉及固定数量指令的其他优化。我不想搜索指令的动态范围。

您能否建议可以用更少的指令替换的其他类似模式?

后期编辑:感谢 Richard Pennington,我发现我想要的是窥视孔优化。

所以我将问题改写为:Linux 汇编代码上的窥孔优化建议。

最佳答案

编译器已经进行了此类优化。此外,进行此类优化并不是那么简单的决定,因为:

push reg1
pop reg1

仍然将 reg1 的值留在内存位置 [sp-nn](其中 nn = reg1 的大小,以字节为单位)。所以虽然sp过去了,后面的代码可以假定[sp-nn]包含reg1的值。

这同样适用于其他优化:

push some1
pop some2

这通常只有在没有等效的 movl some1, some2 指令时才会发出。

如果您尝试优化高级编译器生成的代码,编译器通常会考虑大多数情况。如果您正在尝试优化本地编写的汇编代码,那么汇编程序员应该编写更好的代码。

我建议你优化编译器,而不是优化汇编代码,它会为你提供一个更好的框架来处理代码的意图和寄存器使用等。

关于linux - 减少汇编指令数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1812835/

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