cmp:(compare)
指令进行比较两个操作数的大小
格式: cmp oprd1,oprd2
比较oprd1
和oprd2
操作数,然后通过助记符来实现想要的判断。
teq:(test equal)
测试相等,该指令通常用于比较操作数1和操作数2是否相等。
格式:teq oprd1,oprd2
TEQ
指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR
中条件标志位的值。该指令通常用于比较操作数1
和操作数2
是否相等。(EOR
指令也是实现异或运算,只是不更新CPSR
)
cmp
和teq
助记符如下:
cmp
使用实例实例1:
CMP R0, R1 //R0与R1比较,做R0-R1的操作
ADDHI R0, R0, #1 //若R0 > R1, HI为真,则R0 = R0 + 1
ADDLS R1, R1, #1 //若R0 <= R1, LS为真,则R1 = R1 + 1
cmp
使用实例实例2:
adr r0, _start
ldr r1, _TEXT_BASE
cmp r0, r1 //r0与r1比较,做r0-r1的操作
blne cpu_init_crit //若ne(r0地址与r1地址不相等)为真,执行bl cpu_init_crit 跳转
teq
使用实例实例1:
teq r0, r1 //R0与R1是否相等
ADDeq R0, R0, #1 //若R0 == R1, eq为真,则R1 = R1 + 1