ARM 아키텍처에서는 메모리에서 데이터를 읽어오고 새로운 데이터로 교체하는 데 사용되는 SWP
(Single Data Swap) 명령어를 제공한다. 이 글에서는 SWP
명령어에 대해 알아본다.
Swap instruction
Syntax
<SWP>{cond}{B} Rd,Rm,[Rn]
{cond}
: 조건 명령{B}
: byte 표기Rd, Rm, Rn
: 레지스터
메모리 읽기와 쓰기를 atomic 하게 수행하도록 한다. 보통 Rm
과 Rd
를 같게하여 Rn
과 [Rm
]을 swap 하는데 사용한다.
Examples
SWP R0,R1,[R2] ; Load R0 with the word addressed by R2, and
; store R1 at R2.
SWPB R2,R3,[R4] ; Load R2 with the byte addressed by R4, and
; store bits 0 to 7 of R3 at R4.
SWPEQ R0,R0,[R1] ; Conditionally swap the contents of the
; word addressed by R1 with R0.