ARM分支指令匯編代碼

鏈接

Java分支結(jié)構(gòu)

栗子:

    public static long bigger(long a, long b){
        if(a>=b){
            return a;
        }else{
            return b;
        }
    }

    public static int less(int a,int b){
        if(a<=b){
            return a;
        }else{
            return b;
        }
    }

ARM的分支結(jié)構(gòu)

對(duì)于這種根據(jù)不同情況選擇不同值的語(yǔ)句,ARM在設(shè)計(jì)時(shí)專門有一條強(qiáng)大的csel指令对扶,專門做這個(gè)事情见秽。

先用cmp指令比較兩個(gè)值郁副,然后設(shè)置條件:

  • ge是大于或等于;
  • le是小于或等于;

如果條件滿足锣夹,則x0就是x0页徐,否則x0取x1的值。

000000000000079c <_Z6biggerll>:
 79c:    eb01001f     cmp    x0, x1
 7a0:    9a81a000     csel    x0, x0, x1, ge
 7a4:    d65f03c0     ret

00000000000007a8 <_Z4lessii>:
 7a8:    6b01001f     cmp    w0, w1
 7ac:    1a81d000     csel    w0, w0, w1, le
 7b0:    d65f03c0     ret

Thumb2指令的分支結(jié)構(gòu)

csel這樣的指令需要32位的長(zhǎng)度才放得下.

Thumb2本著能省則省的原則银萍,改用16位的條件mov指令來(lái)實(shí)現(xiàn)泞坦,可以節(jié)省2個(gè)字節(jié)指令空間。

0000101c <_Z6biggerll>:
    101c:    4288          cmp    r0, r1
    101e:    bfb8          it    lt
    1020:    4608          movlt    r0, r1
    1022:    4770          bx    lr

00001024 <_Z4lessii>:
    1024:    4288          cmp    r0, r1
    1026:    bfa8          it    ge
    1028:    4608          movge    r0, r1
    102a:    4770          bx    lr

Thumb指令的分支結(jié)構(gòu)

Thumb指令沒(méi)有帶條件的mov操作砖顷,更不可能有csel這樣復(fù)雜的指令了。

那也沒(méi)問(wèn)題赃梧,返璞歸真滤蝠,我們直接跳轉(zhuǎn)就是了唄?

bge.n,是說(shuō)大于或等于授嘀,也就是不小于的時(shí)候直接跳到12aa物咳,就是bx lr返回這條指令上去。

adds r0, r1, #0其實(shí)也可以翻譯成movs r0,r1蹄皱。前面我們講過(guò)览闰,movs r0,r1其實(shí)是adds r0, r1, #0的別名。本質(zhì)上是一回事巷折。

000012a4 <_Z6biggerll>:
    12a4:    4288          cmp    r0, r1
    12a6:    da00          bge.n    12aa <_Z6biggerll+0x6>
    12a8:    1c08          adds    r0, r1, #0
    12aa:    4770          bx    lr

000012ac <_Z4lessii>:
    12ac:    4288          cmp    r0, r1
    12ae:    dd00          ble.n    12b2 <_Z4lessii+0x6>
    12b0:    1c08          adds    r0, r1, #0
    12b2:    4770          bx    lr
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末压鉴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锻拘,更是在濱河造成了極大的恐慌油吭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件署拟,死亡現(xiàn)場(chǎng)離奇詭異婉宰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)推穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門心包,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人馒铃,你說(shuō)我怎么就攤上這事蟹腾『弁铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵岭佳,是天一觀的道長(zhǎng)血巍。 經(jīng)常有香客問(wèn)我,道長(zhǎng)珊随,這世上最難降的妖魔是什么述寡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮叶洞,結(jié)果婚禮上鲫凶,老公的妹妹穿的比我還像新娘。我一直安慰自己衩辟,他們只是感情好螟炫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著艺晴,像睡著了一般昼钻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上封寞,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天然评,我揣著相機(jī)與錄音,去河邊找鬼狈究。 笑死碗淌,一個(gè)胖子當(dāng)著我的面吹牛剩彬,可吹牛的內(nèi)容都是我干的锣笨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼会傲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼磅废!你這毒婦竟也來(lái)了纳像?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拯勉,失蹤者是張志新(化名)和其女友劉穎爹耗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谜喊,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潭兽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斗遏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片山卦。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出账蓉,到底是詐尸還是另有隱情枚碗,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布铸本,位于F島的核電站肮雨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏箱玷。R本人自食惡果不足惜怨规,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锡足。 院中可真熱鬧波丰,春花似錦、人聲如沸舶得。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沐批。三九已至纫骑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間九孩,已是汗流浹背先馆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捻撑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓缤底,卻偏偏與公主長(zhǎng)得像顾患,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子个唧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容