ARM Assembly] Base Plus Offset
🏷️Base Plus Offset
📌Post-Indexing
- base로 명령어를 실행한 후 base 값에 offset을 더해 base를 갱신한다.
- 🔍ex)
LDR R0, [R1], #4
: R1 주소에 있는 값을 R0로 load한 뒤, R1 값에 +4를 한다.
LDR R0, [R1], R3, LSL #2
: R1 주소에 있는 값을 R0로 load한 뒤, R3의 값에 2번 논리 왼쪽 시프트를 한 값을 더한다.
📌Pre-Indexing
- 명령어를 실행하기 전 base에 offset을 더하는 방식
- 이때 base값은 갱신되지 않는다.
- 🔍ex)
LDR R0, [R1, #4]
: R1 + 4 주소에 있는 값을 R0으로 load한다.
📌Auto-Indexing
- Pre-Indexing과 동일한데, base값을 갱신한다는 점이 다르다.
- Pre-indexing의 명령어 뒤에
!
(suffix)를 붙여서 사용한다.
- 🔍ex)
LDR R0, [R1, #4]!
: R1 + 4 주소에 있는 값을 R0으로 load하고, R1 값은 갱신한다.