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.