我在圍繞IT
指令(如果有的話)的功能上纏着我的頭。該quick reference card有這樣的:ARM7 IT(如果有)指令真的在做什麼?
操作:IF-THEN
彙編:IT{pattern} {cond}
行動:讓多達四個以下指令的條件,根據圖案。模式是最多三個字母的字符串。每個字母可以是T(Then)或E(Else)。 IT之後的第一條指令具有條件cond。如果相應的字母是T,則以下指令具有條件cond;如果相應的字母是E,則條件cond相反。
實際上,該大綱有一定意義。架構manual entry並沒有讓我在任何地方瞭解:
If-Then條件指令。
語法IT {X {Y {Z}}} COND
其中:
x
指定在IT塊中的第二指令的條件開關。
y
指定IT塊中第三條指令的條件開關。
z
指定IT塊中第四條指令的條件開關。
cond
指定IT塊中第一條指令的條件。在IT塊中的第二,第三和第四指令的條件開關可以是:
T
然後。將條件cond應用於指令。
E
其他。將cond的反向條件應用於指令。注
有可能在一個IT指令使用AL(總是條件)COND。如果這樣做,則IT塊中的所有指令必須是無條件的,並且x,y和z中的每一個必須是T或省略但不是E。 操作
IT指令最多組成四條指令有條件的。條件可以完全相同,或者其中一些可以是其他條件的邏輯反向。 IT指令後的條件指令構成IT塊。
IT塊中的指令(包括任何分支)必須在其語法的{cond}部分中指定條件。
由於(大多數)每條指令都可以很容易地指定一個條件,所以IT
指令有什麼好處?
_「由於(最)每條指令可以很容易地指定條件」 _ - 在ARM編碼,是的。你確實意識到大多數的Thumb編碼甚至沒有空間去編碼4位寄存器指定符,更不用說條件碼了,對嗎? – Notlikethat
另請參見:[arm it條件指令彙編程序armcc](http://stackoverflow.com/questions/25991476/arm-it-conditional-instruction-assembler-armcc) –
另請參見:[ARM彙編程序類型上的Ubuntu Wiki]( https://wiki.ubuntu.com/ARM/Thumb2PortingHowto#Types_of_Assembly_Language) –