2011-06-17 18 views

回答

1

Thumb與ARM使用相同的32位寄存器,所以這裏沒有問題。減半是指令大小(即使這不是嚴格適用於Thumb-2)。

別擔心,如果您編譯爲Thumb,則不需要更改代碼。

+0

同樣,thumb和thumb2都保留了ldm/stm指令,每條指令最多有8個寄存器,並且看起來像是thumb2的完整補充。基本上,如果你對ARM的行爲感到滿意,那麼不要擔心thumb/thumb2。這是一個指令解碼器的東西,而不是執行的東西。 –

+0

但是,LDM/STM指令對於最多8個寄存器的整個集合並不是原子的。原子性只能保證每32位字。 – unixsmurf

0

指令大小在Thumb模式下是16位,而不是寄存器大小。

這意味着一個常量賦值 - 如i=1; - 可以看作原子。儘管生成了多條指令,但即使iint32_t,也只有一條指令會修改內存位置i

但是,您需要一個關鍵的部分,一旦你像i=i+1的東西。這當然不是原子的。