OSPendSV:<br /> MRS R0, psp //PSP is process stack pointer<br /> CBZ R0, OSPendSV_nosave //skip register save the firsttime<br /> SUB R0, R0, #0x20 <br /> stm r0, { r4 - r11 } // 出错了<br /> 。<br /> 。<br /> 。<br /> 。<br />OSPendSV_nosave:<br /> PUSH {R14} //; need to save LR exc_return value<br /> LDR R0, __OS_TaskSwHook //; OSTaskSwHook();<br /> BLX R0<br /> pop {r14} // 出错了<br /> LDR R4, __OS_PrioCur //; OSPrioCur = OSPrioHighRdy<br /> LDR R5, __OS_PrioHighRdy<br /> LDRB R6, [R5]<br /> STRB R6, [R4]<br /><br /> LDR R4, __OS_TCBCur //; OSTCBCur = OSTCBHighRdy;<br /> LDR R6, __OS_TCBHighRdy<br /> LDR R6, [R6]<br /> STR R6, [R4]<br /><br /> LDR R0, [R6] <br /> LDM R0, {R4-R11} // 出错了<br /> ADD R0, R0, #0x20<br /> MSR psp, R0 //; load PSP with new process SP<br /> ORR LR, LR, #0x04 // 出错了<br /> BX LR <br /> NOP<br /><br />以上代码在iar上编译通过但在Crossstudio for arm上出错了:错误如下:<br /><br />Building “ucTest” in configuration “THUMB Flash Debug” — 4 errors<br /> Assembling os_cpu_a.asm — 4 errors<br /> D:/soft/lm3s/ucProg/uCOS-II/Ports/arm-cortex-m3/Generic/IAR/os_cpu_a.asm: Assembler messages:<br /> Error: lo register required -- `stm r0,{r4-r11}'<br /> Error: invalid register list to push/pop instruction --`pop {r14}'<br /> Error: lo register required -- `ldm R0,{R4-R11}'<br /> Error: unshifted register required -- `orr LR,LR,#0x04'<br />Build failed<br /><br />有没有crossstudio for arm 关于汇编的文档啊,或者gcc关于汇编的也行,<br />还有gcc的主页是什么啊? |
|