第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)
b和bl的区别:
B跳转之后不返回,类似于C语言中的goto;
Bl跳转之后返回,继续执行下面的语句,即把下一句的地址放入lr寄存器,子过程执行完后,会执行MOV
Bx
展开后即为:
.globl
.align
save_boot_params:
bx
ENDPROC:
下面是弱标号:当连接器发现别的地方有定义,则调用别的地方的,别的地方找不到,才调用此处的定义。
上图为:读--->设置--->写回;bic
0xd3分析如下图:
条件判断:
因不是_OMAP芯片,所以,整个取与为0,再取非为1,所以if宏定义所有语句都会执行,这涉及到cp15协处理器(包含一系列的寄存器)的操作。
Cp14一般用于Debug调试,cp12-13保留给ARM公司以后用,cp11一般用于双精度浮点数的计算,cp10一般用于单精度浮点数的计算,cp8-9保留,cp0-7是ARM留给各生产厂家使用。