🏷️LDR
- 메모리에서 레지스터로 데이터를 가져오는 Load연산이다.
- 🖇️cf. LDR stands for Load to Register.
- 또한, 레지스터에 immediate값을 저장할 때도 사용된다.
- 🖇️cf. MOV보다 큰 범위의 immediate값을 지정할 수 있다는 차이점이 존재한다.
LDR
명령에서만 특별히 immediate값을 명시할 때, #
대신 =
가 사용된다.
- 🔍ex)
LDR RO, =0x1234
: immediate 0x1234값을 R0에 저장
🏷️STR
- 레지스터의 값을 메모리에 저장하는 Store연산이다.
- 🖇️cf. STR stands for Store.
🏷️Indirect Addressing Mode
- ARM의 주소 지정 모드 중 간접 주소 지정이 존재한다.
[]
를 사용한다.
- C언어의 포인터에 사용되는 간접 지정 연산자(
*
)를 생각하면 된다.
- 🔍ex)
STR R0, [R1]
: R1에 저장되어 있는 값을 주소로서 참조한 메모리 공간에, R0의 값을 저장한다.
LDR R0, [R1]
: R1에 저장되어 있는 값을 주소로서 참조한 메모리 공간에 존재하는 값을, R0로 로드한다.
- 🖇️cf.
LDR R0, [0x1234]
처럼 사용할 수는 없다.