2440init.s中的一段代码分析

2440init.s中的一段代码分析

以下是2440init.s中代码段开始的一段代码试着分析一下

ASSERT :DEF:ENDIAN_CHANGE
 [ ENDIAN_CHANGE
     ASSERT  :DEF:ENTRY_BUS_WIDTH
     [ ENTRY_BUS_WIDTH=32
  b ChangeBigEndian     ;DCD 0xea000007
     ]
    
     [ ENTRY_BUS_WIDTH=16
  andeq r14,r7,r0,lsl #20   ;DCD 0x0007ea00
     ]
    
     [ ENTRY_BUS_WIDTH=8
  streq r0,[r0,-r10,ror #1] ;DCD 0x070000ea
     ]
 |
     b ResetHandler  
 ]

1、ASSERT :DEF:ENDIAN_CHANGE

ASSERT 是断言伪指令,语法是:ASSERT +逻辑表达式

def 是逻辑伪操作符,格式为: :DEF:label,作用是:判断label是否定义过

2、四句蓝色的指令能且只能执行一句,并且前三句若执行跳转后处理程序的最后一句也是

b ResetHandler  

3、" [ " 相当于 if

      " | "相当于else

      " ] " 相当于endif

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张