请教高手一个问题,我一直百思不得其解。用的编译工具是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),传递的话就没有问题。
|