keil 中用函数指针调用函数的参数限制

ANSIC中,通过函数指针调用的函数的参数的个数没有限制,但是KeilC对此有限制,至多3个参数。

因为,KeilC编译时,无法通过函数指针找到该函数的局部数据段,也就无法通过局部数据段传递参数,只能通过寄存器传递参数,所以参数个数是有限制的。

碰到这个问题时解决办法是:

① 将该函数改为reentarnt类型。

② 修改源程序,将多个参数放在一个结构体中传递。

交叉汇编

移植的时候可能还需要编写少量的51汇编程序。

汇编和C互相调用应该遵守KeilC的参数传递和返回值传递规则。

为了使汇编程序也能够进行overlay分析,汇编的书写要有一定的格式。

另外需要强调的一点是:被C程序调用的汇编函数可以使用所有的寄存器,而不用担心会修改C程序中使用的寄存器。

永不止步步 发表于02-14 09:57 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号