在线时间166 小时
UID417103
注册时间2012-3-31
NXP金币0
该用户从未签到
金牌会员
 
- 积分
- 1072
- 最后登录
- 2023-4-10
|

楼主 |
发表于 2014-12-15 09:41:00
|
显示全部楼层
原汇编是这么操作的:
e_lis r11,OSTCBHighRdy@ha #Get pointer to ready task TCB
e_lwz r11,OSTCBHighRdy@l(r11)
e_lis r12,OSTCBCur@ha #Save as current task TCB ptr.
e_stw r11,OSTCBCur@l(r12)
e_lwz r1, 0(r11) #Get new stack pointer
转换成C应该就是:
OSTCBCur = OSTCBHighRdy;
asm
{
e_lis r11,OSTCBCur@ha // Get pointer to ready task TCB
e_lwz r11,OSTCBCur@l(r11)
e_lwz r1, 0(r11) // Get new stack pointer
}
如果只用汇编编译就没错,程序正常运行。
如果C嵌套汇编,编译有警告,程序运行不正常! |
|