|
GBLL THUMBCODE ;global logical variable, init. to {false}<br /> [ {CONFIG} = 16 ;][=if,{CONFIG}:build-in variable defined by ARM assembler,16=assembing Thumbcode.<br />THUMBCODE SETL {TRUE} ;SETL:set the logic variable<br /> CODE32 ;changing from Thumb state to Arm state<br /> | ;|=else<br />THUMBCODE SETL {FALSE}<br /> ] ;]=endif<br /><br /> [ THUMBCODE<br /> CODE32 ;for start-up code for Thumb mode???<br /> ]<br /><br />首先是bootload里的以上这段代码,这段代码的目的我的理解是无论如何以下的代码将会以32位编译,也就是说bootload是以32位方式编译的,但是在bootload结束时有出现如下代码:<br /><br />[ :LNOT:THUMBCODE ;if(!thumbcode) arm state;<br /> BL Main ;Don't' use main() because ......<br /> B . <br /> ];<br /><br /> [ THUMBCODE ;for start-up code for Thumb mode;<br /> orr lr,pc,#1<br /> bx lr<br /> CODE16<br /> BL Main ;Don't 'use main() because ......<br /> b .<br /> CODE32<br /> ]<br /><br />这段是什么意思呢? 这样做有什么意义? 我直接用 BL Main 似乎对程序的运行也没有影响。。 |
|