分类: 嵌入式
2012-05-20 15:21:06
E500内核的ABI中定义了E500内核中支持的数据类型;通用寄存器的使用规则;PowerPC栈帧结构;ELF文件的组成等一系列与编译器相关的内容。
PowerPC的编译器必须遵守ABI手册,并按照ABI的规定来产生目标代码。进行C语言与汇编语言混合编程的程序员必须掌握ABI。
ABI规定E500内核的数据定义如下。
类型 | ANSI C | 大小 | 对界 |
整型数据 | char | 1B | 8位 |
signed char | |||
unsigned char | 1B | ||
short | 2B | 16位 | |
signed short | |||
unsigned short | 2B | ||
Int | 4B | 32位 | |
signed int | |||
long int | |||
signed long | |||
enum | |||
unsigned int | 4B | ||
unsigned long | |||
long long | 8B | 64位 | |
signed long long | |||
unsigned long long | |||
指针类型 | any * | 4B | 32位 |
any (*)() | |||
浮点类型 | float | 4B | 32位 |
double | 8B | 64位 | |
long double | 16B | 128位 |
E500内核不支持浮点运算,程序员可以使用定点运算模拟浮点运算,或者使用E500内核中的SPE部件实现浮点运算。双精度(double)和多精度(long double)浮点运算的速度较慢,占用的资源也比较多。因此一般来说,很少有处理器直接支持双精度和多精度浮点运算。