ARM處理器架構的Thumb指令集中關於IT指令的使用


在ARMv6T2以及ARMv7架構擴展了Thumb指令集,其中加入了IT指令,進一步增強了代碼的緊湊性。

Thumb中有一個比較有意思的指令——IT,這條指令用於根據指定的條件來執行后面相繼的四條指令。當然,Thumb-2中大部分算術邏輯指令都含有帶條件執行的特征,不過Thumb-2是32位的。如果你需要更緊湊的指令,那么使用Thumb結合ThumbEE來做帶條件的指令執行還是不錯的選擇。Thumb本身不具備帶條件指令執行的特性。

IT指令的描述為:IT{<x>{<y>{<z>}}} <firstcond>    

其中,<x>表示第二條指令的條件;<y>表示第三條指令的條件;<z>表示第四條指令的條件。<firstcond>是條件操作數,表示第一條指令的條件。

<x>、<y>、<z>的標識其實就兩種符號——T或E。T表示Then,表示相應的指令所滿足的條件與<firstcond>一致;E表示else,表示相應的指令所滿足的條件與<firstcond>完全相反。因此,對於第一條指令而言,總是為T的,因此不需要在IT中顯示給出,它直接對應於<firstcond>的條件。

另外,在IT塊中不能再使用IT指令。即,相繼的四條指令中不允許出現IT指令。

下面給出一些示例代碼:

 

    cmp     r1, #0
    itete   eq
    moveq   r1, #10
    movne   r2, #20
    moveq   r3, #30
    movne   r12, #50

    stmia   r0, {r1-r3, r12}

    bx      lr

 

可能會覺得奇怪,為何itete 指令中的 ete 已經表示了條件了,為何下面的指令中還需要條件,moveq,movne。這點需要注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM