C6000的参数传递规则

 

 

0

C6000系列DSPC62和67系列有A0~A15,B0~B15共32个寄存器,对于C64XX,有A0~A31,B0~B31共64个寄存器

1、C62XX可用于条件寄存器有A1、A2、B0、B1、B2,对于C64XX来说,还可以使用A0;

2、C6000的C编译器规定函数调用的前10个入口参数使用寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12、B12,调用者必须保存A0~A9和B0~B9寄存器(C64平台还要保存A16~A31,B16~B31寄存器),被调用者使用堆栈存放临时变量,被调用函数中如果使用了A10~A15,B10~B15寄存器,则需要进行保护,被调用者使用A4寄存器保存函数返回值。 实际上这一切是通过.cproc和.endproc自动完成,汇编优化器会在.cproc和.endproc语句处生成满足C调用约定的入口代码和出口代码。汇编优化器会自动保存使用过的寄存器,并在.return语句处正确地将返回值放到寄存器A4中。

转自 http://blog.21ic.com/user1/2989/archives/2006/20637.html感谢原作者( yidong1981?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值