| 
在线时间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嵌套汇编,编译有警告,程序运行不正常!
 | 
 |