004 循環(huán)&選擇
cmp(Compare)比較指令
???CMP 把一個(gè)寄存器的內(nèi)容和另一個(gè)寄存器的內(nèi)容或立即數(shù)進(jìn)行比較搁进。但不存儲(chǔ)結(jié)果姿染,只是正確的更改標(biāo)志蹄皱。
???一般CMP做完判斷后會(huì)進(jìn)行跳轉(zhuǎn)旧噪,后面通常會(huì)跟上B指令芹扭!
- BL 標(biāo)號(hào):跳轉(zhuǎn)到標(biāo)號(hào)處執(zhí)行
- B.GT 標(biāo)號(hào):比較結(jié)果是大于(greater than)麻顶,執(zhí)行標(biāo)號(hào),否則不跳轉(zhuǎn)
- B.GE 標(biāo)號(hào):比較結(jié)果是大于等于(greater than or equal to)舱卡,執(zhí)行標(biāo)號(hào)辅肾,否則不跳轉(zhuǎn)
- B.EQ 標(biāo)號(hào):比較結(jié)果是等于,執(zhí)行標(biāo)號(hào)轮锥,否則不跳轉(zhuǎn)
- B.HI 標(biāo)號(hào):比較結(jié)果是無符號(hào)大于矫钓,執(zhí)行標(biāo)號(hào),否則不跳轉(zhuǎn)
Switch
1舍杜、假設(shè)switch語句的分支比較少的時(shí)候(例如3新娜,少于4的時(shí)候沒有意義)沒有必要使用此結(jié)構(gòu),相當(dāng)于if既绩。
2概龄、各個(gè)分支常量的差值較大的時(shí)候,編譯器會(huì)在效率還是內(nèi)存進(jìn)行取舍饲握,這個(gè)時(shí)候編譯器還是會(huì)編譯成類似于if私杜,else的結(jié)構(gòu)。
3救欧、在分支比較多的時(shí)候:在編譯的時(shí)候會(huì)生成一個(gè)表(跳轉(zhuǎn)表每個(gè)地址四個(gè)字節(jié))衰粹。