Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 961 Bytes

swap.md

File metadata and controls

30 lines (21 loc) · 961 Bytes

スワップ命令

SWP, SWPBが該当します。

SWP{cond}{B} Rd,Rm,[Rn]      ; Rd=[Rn], [Rn]=Rm

RdにRnが指すメモリの内容を格納した後で、RmをRnが指すメモリに格納します。

ビット 内容
31-28 条件
27-23 必ず 0b00010
22 B - スワップするデータの単位(0=32bit, 1=8bit)
21-20 必ず 0b00
19-16 Rn (R0..R14)
15-12 Rd (R0..R14)
11-4 必ず 0b0000_1001
3-0 Rm (R0..R14)

SWP/SWPB はARMv2a以降でサポートされていますが、ARMv6で非推奨になり、ARMv7ではサポートしてもしなくてもどちらでもよくなり、ついにはARMv8で廃止されました。

RmとRnが同じレジスタを指すことも可能で、問題なく動作します。

SWP命令ではR15をRn,Rd,Rmとして指定することはできません。

Bが1、つまりバイト単位のスワップの場合、Rdの31-8bitは0になります。

実行時間: 1S+2N+1I