ARM编程:GCC编译、代码分析与Thumb代码探究
1. GCC对ARM处理器的支持
GNU编译器支持比树莓派中更老的ARM处理器,以及树莓派基金会从未使用过的ARM处理器配置。例如,有一个库可以为没有浮点运算单元(FPU)的ARM处理器实现IEEE 754浮点运算。不过,所有树莓派都配备了FPU,所以这个库不会被使用。
2. 重新审视除法运算
之前我们假设使用较新的树莓派,并使用较新ARM处理器的SDIV或UDIV指令进行除法运算。若要在较旧的树莓派上进行除法运算,可使用FPU或自行实现。下面我们通过一个简单的C程序来看看GCC编译器是如何处理除法的。
#include <stdio.h>
int main()
{
int x = 100;
int y = 25;
int z;
z = x / y;
printf("%d / %d = %d\n", x, y, z);
return(0);
}
编译该程序的命令为:
gcc -o div div.c
注意,不能使用任何 -O 标志选项,因为任何优化都会移除表达式,编译器会直接将 4 赋值给 z。
查看生成的汇编代码的命令为:
objdump -d div
在主程序中,可以看到设置并调用了一个名为 _divsi
超级会员免费看
订阅专栏 解锁全文
35

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



