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.ET 標(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é)果是等于(equal to),執(zhí)行標(biāo)號(hào)暑诸,否則不跳轉(zhuǎn);
- B.HI 標(biāo)號(hào):比較結(jié)果是無(wú)符號(hào)大于辟灰,執(zhí)行標(biāo)號(hào)个榕,否則不跳轉(zhuǎn);
Switch
- 假如Switch的分支比較少的時(shí)候(例如3芥喇,小于4沒(méi)有意義)西采,沒(méi)有必要使用此結(jié)構(gòu),相當(dāng)于if继控;
- 各個(gè)分支常量的差值較大的時(shí)候械馆,編譯器會(huì)在效率和內(nèi)存進(jìn)行取舍,這個(gè)時(shí)候編譯器還是會(huì)編譯成if武通、else的結(jié)構(gòu)霹崎;
- 在分支較多的時(shí)候,在編譯的時(shí)候冶忱,會(huì)生成一個(gè)表(跳轉(zhuǎn)表每個(gè)地址四個(gè)字節(jié))尾菇;