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
本文解析了ARM架构中用于处理不同数据总线宽度及端序的条件分支指令集。通过ASSERT断言与条件分支结合的方式,实现了根据不同总线宽度进行相应端序转换的功能,并最终跳转至ResetHandler进行复位处理。
7159

被折叠的 条评论
为什么被折叠?



