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