我们正在尝试对 C2000编译器进行验证、并使用优化级别4。
您能给我们提供一个将在4级进行优化的示例代码片段吗?
我们需要一种方法来证明该设置是有效的。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们正在尝试对 C2000编译器进行验证、并使用优化级别4。
您能给我们提供一个将在4级进行优化的示例代码片段吗?
我们需要一种方法来证明该设置是有效的。
请考虑此示例。
C:\examples>type f1.c int gets_inlined(); int main() { return gets_inlined(); } C:\examples>type f2.c int gets_inlined() { return 0x1234; } C:\examples>cl2000 f1.c f2.c -z -o no_opt.out [f1.c] [f2.c] <Linking> C:\examples>dis2000 no_opt.out > no_opt_dis.txt
前两条命令显示源文件。 第三个命令将这些文件构建到程序中。 (由于它使用链接器默认存储器范围、因此几乎肯定不会在您的系统上运行。) 第四条命令将程序反汇编到文件 no_opt_dis.txt 中。 检查该文件并搜索函数 main ...
00000118 _main: 00000118 7640 LCR 0x00011b 00000119 011b 0000011a 0006 LRETR 0000011b _gets_inlined: 0000011b 28a9 MOV AL, #0x1234 0000011c 1234 0000011d 0006 LRETR
LCR 指令执行调用。 操作数是被调用函数的地址。 在这种情况下、它会调用地址0x11b 处的函数 ges_inlined。 该函数 ges_inlined 返回累加器低半部分中的值0x1234。
再次构建、但优化级别为4。 然后反汇编到 opt4_dis.txt 文件中。
C:\examples>cl2000 --opt_level=4 f1.c f2.c -z -o opt4.out [f1.c] [f2.c] <Linking> C:\examples>dis2000 opt4.out > opt4_dis.txt
检查 opt4_dis.txt 并搜索函数 main...
0000010e _main: 0000010e 28a9 MOV AL, #0x1234 0000010f 1234 00000110 0006 LRETR
现在 main 不调用任何函数、它返回值0x1234。
谢谢、此致、
乔治
不幸的是、不
但是、既然您已经大致了解了如何查看优化的发生、那么您可能可以创建自己的。 有关执行哪些其他优化的一些指导、 请在 C28x 编译器手册中搜索 标题 为"What kind of Optimization is performed (正在执行何种优化)"的子章节。 要查看在哪个级别执行了哪些优化、请在同一手册中搜索标题为 调用优化的子章节。
谢谢、此致、
乔治