这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » PowerPC+vxWorks汇编,编译后语句被颠倒!!为何?高手指点~

共1条 1/1 1 跳转至

PowerPC+vxWorks汇编,编译后语句被颠倒!!为何?高手指点~

菜鸟
2005-07-04 19:51:22     打赏

第一段程序是个简化的版本, 编译器无法正常编译,

#if 1 /* compiler can not correctly excute this section */ __asm( " andi. r6, r5, 0x3F "); /* copy the fragement */ __asm( " mtctr r6 "); /* statement A */ /*loop2:*/ __asm( " lwzu r16, 0(r3) "); /* statement B*/ __asm( " stwu r16, 0(r4) "); ........... __asm( " bdnz copyLongs+92 "); /*---jump to loop2 */ #endif

编译的结果为

andi. r6, r5, 0x3F lwzu r16, 0(r3) /*loop2: copylongs+92 */ mtctr r6 stwu r16, 0(r4) ................ bdnz copyLongs+92

其中 copyLongs是函数入口地址, loop2是循环的入口处,即copyLongs+92

由于编译后语句A B 被颠倒,循环无法终止,造成错误。

不知道如何避免这种现象?

谢谢~~~~~




关键词: PowerPC+vxWorks     汇编     编译     语句         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]