汇编语言代码优化指南
1. 优化概述
如果你一直使用 C 或 C++ 进行专业编程,可能会学习汇编语言来优化应用程序。不过,单纯用汇编语言编写函数并不一定能提升性能,因为 GNU 编译器本身就能将高级语言代码转换为汇编语言。要真正优化高级语言函数,就需要编写比编译器更好的汇编代码。
1.1 编译器优化选项
GNU 编译器的 -O 系列选项提供了不同级别的优化:
- -O:基础优化级别。
- -O2:更高级的代码优化。
- -O3:最高级别的优化。
不同优化级别包含的优化技术也可以通过 -f 命令行选项单独应用。
1.2 各级优化技术
1.2.1 编译器优化级别 1
此级别尝试进行九项基本代码优化:
| 选项 | 说明 |
| ---- | ---- |
| -fdefer-pop | 允许输入值在函数调用间在栈上累积,最后用一条指令移除,可能使栈变得混乱。 |
| -fmerge-constants | 尝试合并相同的常量,可能导致编译时间变长。 |
| -fthread-jumps | 处理汇编代码中的条件和无条件跳转,确定最终跳转目标。 |
| -floop-optimize | 优化循环生成,减少循环内不变变量的赋值,优化循环退出条件。 |
| -fif-conversion | 减少或消除 if-then 语句中的条件分支,用条件移动等替代。 |
| -fif-conversion2 | 采用更高级数学特性减少 if-then 语句的条件分支。 |
| -fdel
超级会员免费看
订阅专栏 解锁全文
982

被折叠的 条评论
为什么被折叠?



