"LDR and STR, register offset"의 두 판 사이의 차이
TRACE32
1번째 줄: | 1번째 줄: | ||
− | |||
<p><span style="font-family: malgun;">이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살펴보겠습니다.</span></p> | <p><span style="font-family: malgun;">이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살펴보겠습니다.</span></p> | ||
<p> </p> | <p> </p> |
2015년 5월 7일 (목) 14:55 판
이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살펴보겠습니다.
샘플은 아래와 같습니다.
STRB R2, [R0,R1]
STR(store) 명령은 레지스터의 값을 메모리로 적는 명령입니다.
그 목적 주소가 "[R0,R1]" 으로 되어 있는데요,
[]안에 있으니만큼, "R0+R1"을 먼저 계산하여 실제 목적 주소는
R0(0x10) + R1(0x2000_1A74) = 0x2000_1A84 번지가 됩니다.
다만, 워드(4바이트) 연산이 아닌 바이트 연산을 위한 STRB를 사용하고 있으므로, 실제 메모리 값은 1바이트만 바뀌게 됩니다.
아래의 그림에서 실행 전/후를 비교해 보시기 바랍니다.
실행 전 :
실행 후 :
이상으로 간단히 레지스터값을 오프셋으로 사용한 LDR/STR 연산에 대해 살펴보았습니다.
잘못된 점이나 추가 문의사항은, TRACE32@mdstec.com 으로 연락 부탁드립니다.
"TRACE32로 바라본 ARM - Cortex-M" 으로 돌아가기