LDR and STR, immediate offset

TRACE32
Admin (토론 | 기여) 사용자의 2015년 4월 30일 (목) 17:08 판

(비교) ← 이전 판 | 최신판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 검색

지난번 LDR/STR의 기본적인 내용에 이어, 이번엔 LDR/STR 명령에 상수값 오프셋이 들어간 경우를 살펴보겠습니다.

 

샘플은 아래와 같은 두 개의 명령을 사용하겠습니다.

LDRB R1, [R7], #0x1 : post-indexed

LDR R0, [R13, #0x8] : pre-indexed

 

 

pre-indexed

LDR R0, [R13, #0x8] 와 같이 오프셋이 [] 안에 들어가 있는 경우를 말합니다.

 

아래의 샘플을 보면,

LDR R0, [R13, #0x8] 명령을 수행할 때,

R13인 0x2000_2388번지에서 0x8번지 떨어진 0x2000_2390 번지에서 4바이트를 R0로 읽어오는 것을 확인할 수 있습니다.

주의할 것은 R13의 값은 변하지 않습니다.

 

실행 전 :

 

 

실행 후 :

 

 

 

 

 

post-indexed

LDRB R1, [R7], #0x1 와 같이 오프셋이 [] 밖에 나와있는 경우를 말합니다.

 

아래의 샘플을 보면,

"LDRB R1, [R7], #0x1" 명령에 의해

- R7의 값인 0x0800_4B30 번지에서 1바이트를 R1으로 읽어오고

- 그 이후에 R7의 값이 0x1만큼 증가하는 것을 볼 수 있습니다.

 

주의할 것은, LDRB의 경우 1바이를 읽어오는 명령이라는 것입니다.

 

실행 전 :

 

실행 후 :