![]() |
1
3
编译器已经进行了这样的优化。此外,做出这样的优化并不是一个简单的决定,因为:
仍然在内存位置[sp nn]保留reg1的值(其中nn=reg1的字节大小)。因此,尽管sp超过了它,但后面的代码可以假定[sp nn]包含reg1的值。 这同样适用于其他优化:
通常只有当没有等价物时才会发出
如果您试图优化高级编译器生成的代码,编译器通常会考虑其中的大部分情况。如果您试图优化本机编写的汇编代码,那么汇编程序员应该编写更好的代码。 我建议您优化编译器,而不是优化汇编代码,它将为您提供一个更好的框架来处理代码和寄存器使用等意图。 |
![]() |
2
1
为了获得更多关于你想做什么的信息,你可能需要寻找“窥视孔优化”。 |
![]() |
3
0
换成
实际上增加了程序的大小。奇怪的! 你能提供一些其他可能的窥视孔优化吗? |
![]() |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Arya · 汇编语言中的“标签”——操作码 2 年前 |
![]() |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 2 年前 |
![]() |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 2 年前 |
![]() |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 3 年前 |