问题描述
用8.1 GNU编译器编译我的应用程序后,我的代码大小显着增加。为什么会这样?
解决/修复方法
EDK 8.1中的GNU编译器包括一个算法更改,当没有桶形移位器时,它会影响代码优化。在这种情况下,-O3选项不是最佳地优化代码。对于长时间移位(N),它曾使用具有单个位移的N次循环,而不是吐出一系列SRL指令。前者代码大小较低,后者速度非常快。
因此,当您在EDK 8.1i中使用-O2或-O3进行编译时,您将看到后者“更快”的代码。使用-Os(大小优化)进行编译时,您将看到较小的(原始)代码。
没有回复内容