程序问题请教!

[复制链接]
2158|10
 楼主| jlgcumt 发表于 2012-7-20 09:52 | 显示全部楼层 |阅读模式
UINT16 Cmp(UINT16 *a,UINT16 *B)
  {
     UINT16 Result = 0;

      if( a[5] == b[5] )     // 请问这句话有什么问题呀
       Result = 0xffff;

     return Result;
  }
  上面那句话在单步仿真的时候有时候会自动跑进汇编里面,导致Result = 0xffff;不执行
是哪出问题了吗。
  堆栈不够还是别的什么原因?
汇编语言是类似于下面的:
MOVL XR4,*-SP[4];
haohaoren136 发表于 2012-7-21 11:51 | 显示全部楼层
airwill 发表于 2012-7-22 09:26 | 显示全部楼层
可能是编译器优化打乱了指令和源程序的直接对应关系导致的。
继续跟踪,最终不会影响执行结果
 楼主| jlgcumt 发表于 2012-8-25 18:53 | 显示全部楼层
3# airwill 呵呵,程序没问题,应为刚开始运行时都把程序搬到RAM里了,导致汇编的程序跟c程序对应不上。
uuniao 发表于 2012-8-29 08:48 | 显示全部楼层
wang1979 发表于 2012-8-29 17:17 | 显示全部楼层
应该语法上没有问题,你可以吧优化选项关闭,仿真调试一下试试!
syp_hust 发表于 2012-9-2 17:32 | 显示全部楼层
在函数中传地址操作也经常出问题, 空间足够的境况,多开辟两个变量附个值比较试试看
永恒之旅 发表于 2012-10-23 21:46 | 显示全部楼层
UINT16 Cmp(UINT16 *a,UINT16 *B)
你确定参数是 UINT16* B 而不是 小写的 b 。
永恒之旅 发表于 2012-10-23 21:47 | 显示全部楼层
UINT16 Cmp(UINT16 *a,UINT16 *B)
你确定参数是 UINT16* B 而不是 小写的 b 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:善攻者,动于九天之上,善守者,藏于九地之下!

183

主题

733

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部