5.4 开发PowerPC嵌入式程序
推荐给好友
打印
加入收藏
更新于2008-10-09 12:40:45

通过上三个节的学习,读者应该已经可以编写完整ppc汇编程序。这一节 我们来深入学习核心——ABI。应用程序二进制接口(ABI)为系统编译应用程式提供一个接口。嵌入式应用二进制接口(EABI)是来自的PowerPC ABI。该EABI不同的PowerPC ABI的与补充,目的是减少内存使用量和优化的执行速度,因为这是嵌入式系统软件主要要求,。该EABI介绍了寄存器使用约定, 参数传递方式,堆栈组织,小型数据域,object文件,可执行文件格式。
5.4.1文件格式
符合EABI标准的Object文件和可执行的文件在ELF文件当中。debug信息存储在DWARF类型文件当中。当前的DWARF标准为1.1.0。
5.4.2数据类型和对齐方式
PowerPC架构数据类型如下:

数据类型

大小(byte

Byte

    1

Halfword

    2

Word

    4

Doubleword

    8

Quadword

    16

 

ANSI C标准数据类型

PPC数据类型

大小(byte

char

Byte

    1

short

Halfword

    2

int

Word

    4

long int

Word

    4

enum

Word

    4

指针

Word

    4

float

Word

    4

double

doubleword

    8

long double

Quadword

    16

 

所有数据类型在内存和堆栈上是对齐的,在地址是一个多其大小。例如,一个字,因为它的大小是4个字节,既在内存上对齐且地址能被4整除 。Halfword地址能被2整除 。一此规则的例外是Quad-words话,且他们不包含在一个联合体或结构体;他们只需以8字节对齐。数组的对齐边界需要确定元素数据类型和数组元素个数。一个结构体(或联合体)对齐方式是按结构体中最大的元素为边界的。因此,如果结构体包含一Doubleword, doubleword成员必须开始一个地址能被8除尽。填充相邻的结构体的成员要视不同的成员的大小。结构体的大小是不确定的。例如将是一个网络协议的数据包,其中有具体的路线的要求。对于这些情况的一些编译器允许对齐功能最好不要使用。
5.4.3寄存器调用约定
PowerPC架构的定义32通用寄存器(GPRS)和32个浮点型寄存器(FPRS)。该EABI把寄存器分为易失的,非易失性,专用。非易失性的寄存器其原始值保存,因此,函数修改非易失性寄存器必须首先还原其原始值,然后再返回。易失的寄存器可以不保留。
3个非易失性的特殊寄存器r1,r2和r13。r1为堆栈帧指针(SP)。 r2是专门用于为基地的指针(锚)为唯读小资料区。r13是专门为使用作为解决读写小数据区寄存器。专用寄存器绝不能用于任何其他目的,而不是即使是暂时的,因为他们可能在任何时间被异常处理程序使用。所有的PowerPC寄存器功能如下:

    寄存器

          类型

        作用

R0

Volatile

语言相关

R1

专用

R2

专用

只读

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.