ASSERT :DEF:ENDIAN_CHANGE 判断ENDIAN_CHANGE是否已定义
[ ENDIAN_CHANGE 如果已经定义了ENDIAN_CHANGE,则判断ENDIAN_CHANGE 真值,如果为真
[ ENTRY_BUS_WIDTH=32
b ChangeBigEndian ;DCD 0xea000007 0xea000007 是 b ChangeBigEndian的机器码
]
;在bigendian中,地址为A的字单元包括字节单元A,A+1,A+2,A+3,字节单元由高位到低位为A,A+1,A+2,A+3
; 地址为A的字单元包括半字单元A,A+2,半字单元由高位到低位为A,A+2
[ ENTRY_BUS_WIDTH=16
andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00 如果是半字对齐,则先取A+2 ea00 后A 0007
]
[ ENTRY_BUS_WIDTH=8
streq r0,[r0,-r10,ror #1] ;DCD 0x070000ea
]
|
b ResetHandler //如果没有改变小端模式,则直接跳转 条件编译,所以这个是编译成第一个机器指令,占一个字 0x0--0x04
]
b HandlerUndef ;handler for Undefined mode ox04 这些是中断入口
b Hand