打印

ADS中函数参数传递出现错误的问题

[复制链接]
2435|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
deyeok|  楼主 | 2007-7-11 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教高手一个问题,我一直百思不得其解。用的编译工具是ADS1.2,cpu是三星的2410,在函数传递的时候,比如float fun(float x){}函数,x参数在进入函数之前一直是正确的,但是当进入函数内部的时候,发现x一直为0,表示没传递进去,单步走的时候发现在进入函数的过程中有一小段汇编程序,应该就是搬移参数的吧。这个问题一直没找到原因,另外,当函数参数是一个比较复杂的结构体的时候也出现过传递参数错误的问题,不过是只有一部分错误,比如结构体struct test_param{
  int len;
  int tolen;
  char buf[128];
}
buf里面进入函数之前很正常,比如是“1234.567834”,进入函数内部的时候就可能变成“1234.56XXXX”后面4位是乱码,在进入到函数之前单步走的时候也有一小段复制汇编代码。
    请教各位大虾有没有碰到过这种情况。我如果用指针传递的话都是正确的比如float fun(float *x),传递的话就没有问题。

相关帖子

沙发
deyeok|  楼主 | 2007-7-20 15:26 | 只看该作者

没人遇到这种问题么?

没人遇到这种问题么?

使用特权

评论回复
板凳
ayb_ice| | 2007-7-20 18:35 | 只看该作者

随便说说

float fun(float x);
这种情况参数X是通过R0传递的,应该很简单,不过没有遇到过问题...

使用特权

评论回复
地板
coke| | 2007-7-20 19:55 | 只看该作者

注意字节对齐问题.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

23

帖子

0

粉丝