CMP(compare)比较指令
CMP把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志;
一般CMP做完判断后,会进行跳转,后面通常会跟上B指令;
- BL 标号:跳转到标号出执行;
- B.ET 标号:比较结果是大于(greater than),执行标号,否则不跳转;
- B.GE 标号:比较结果是大于等于(greater than or equal to),执行标号,否则不跳转;
- B.EQ 标号:比较结果是等于(equal to),执行标号,否则不跳转;
- B.HI 标号:比较结果是无符号大于,执行标号,否则不跳转;
Switch
- 假如Switch的分支比较少的时候(例如3,小于4没有意义),没有必要使用此结构,相当于if;
- 各个分支常量的差值较大的时候,编译器会在效率和内存进行取舍,这个时候编译器还是会编译成if、else的结构;
- 在分支较多的时候,在编译的时候,会生成一个表(跳转表每个地址四个字节);