ARM指令中BL和BEQ是什么意思?还有LR指什么?不明白,刚开始学,请教下各路大神~~?
1. B、 BL,跳。BL相当于C中的调用子函数,在jump的标签上加上mov PC后,LR可以返回BL的下一条指令。BEQ(compare equal,EQ is equal)在BEQ指令之前应该有一条比较指令,如CMP R0,R1。如果R0=R1,则执行BEQ指令,否则不执行。
2. LR链接寄存器(用于存储子程序的返回地址)LR等价于指针变量,即内存中指令的地址。如果子例程再次调用该子例程,则上次调用的子例程的返回地址应存储在堆栈中。
ARM指令中BL和BEQ是什么意思?LR是指什么?
B.BL跳跃。BL相当于C中的调用子函数,在jump的标签上加上mov PC后,LR可以返回BL的下一条指令。BEQ(compare equal,EQ is equal)在BEQ指令之前应该有一条比较指令,如CMP R0,R1。如果R0=R1,则执行BEQ指令,否则不执行。LR链接寄存器(用于存储子程序的返回地址)LR等价于指针变量,即内存中指令的地址。如果子例程再次调用该子例程,则上次调用的子例程的返回地址应存储在堆栈中。
ARM指令的条件码是什么?
当处理器在arm状态下工作时,几乎所有指令都会根据CPSR中指令的条件代码和条件字段的状态有条件地执行。当指令的执行条件满足时,执行该指令,否则忽略该指令。每条arm指令都包含一个4位条件码,位于指令的最高4位[31:28]。共有16种状态码。每个条件码可以用两个字符来表示,可以加在指令助记符之后,同时使用。例如,跳转指令B可以通过添加后缀EQ而变为BEQ,这意味着“相等跳转”,即当CPSR中的Z标志被设置时,跳转发生。在16个条件代码中,只有15个可以使用。如表所示,第16位(1111)为系统预留,暂时不能使用。指令条件代码条件代码助记符后缀标志表示0000 EQ Z set equal 0001 ne Z clear不等0010 CS C set unsigned number大于或等于0011 CC C clear unsigned number小于0100 Mi n set负数0101 pl n clear正数或零0110 vs V set overflow 0111 VC V clear not overflow 1000 Hi C set Z清除无符号数大于1001 LS C清除Z集合无符号数小于或等于1010 Ge N等于V符号数大于或等于1011 LT N不等于V符号数小于1100 GT Z清除和(N等于V)符号数大于1101 Le Z集合或(N不等于V)符号数小于或等于1110 al忽略无条件执行