汇编八、循环&选择

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的结构;
  • 在分支较多的时候,在编译的时候,会生成一个表(跳转表每个地址四个字节);

你可能感兴趣的:(汇编八、循环&选择)