"LDR and STR, register offset"의 두 판 사이의 차이

TRACE32
이동: 둘러보기, 검색
(새 문서: <p>지난번 "LDR/STR의 기본적인 내용", "LDR/STR immediate offset" 에 이어,</p> <p>이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살...)
 
 
(같은 사용자에 의한 2개의 중간 편집이 숨겨짐)
1번째 줄: 1번째 줄:
<p>지난번 "LDR/STR의 기본적인 내용", "LDR/STR immediate offset" 에 이어,</p>
+
<p><span style="font-family: malgun;">이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살펴보겠습니다.</span></p>
<p>이번엔 LDR/STR 명령에 레지스터값을 오프셋으로 사용하는 경우를 살펴보겠습니다.</p>
+
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>샘플은 아래와 같습니다.</p>
+
<p><span style="font-family: malgun;">샘플은 아래와 같습니다.</span></p>
<p>STRB R2, [R0,<strong><span style="color: #ff9900;">R1</span></strong>]</p>
+
<p><span style="font-family: malgun;">STRB R2, [R0,<strong><span style="color: #ff9900;">R1</span></strong>]</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>STR(store) 명령은 레지스터의 값을 메모리로 적는 명령입니다.</p>
+
<p><span style="font-family: malgun;">STR(store) 명령은 레지스터의 값을 메모리로 적는 명령입니다.</span></p>
<p>그 목적 주소가 "[R0,R1]" 으로 되어 있는데요,</p>
+
<p><span style="font-family: malgun;">그 목적 주소가 "[R0,R1]" 으로 되어 있는데요,</span></p>
<p>[]안에 있으니만큼, "R0+R1"을 먼저 계산하여 실제 목적 주소는</p>
+
<p><span style="font-family: malgun;">[]안에 있으니만큼, "R0+R1"을 먼저 계산하여 실제 목적 주소는</span></p>
<p>R0(0x10) + R1(0x2000_1A74) = 0x2000_1A84 번지가 됩니다.</p>
+
<p><span style="font-family: malgun;">R0(0x10) + R1(0x2000_1A74) = 0x2000_1A84 번지가 됩니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>다만, 워드(4바이트) 연산이 아닌 바이트 연산을 위한 STRB를 사용하고 있으므로, 실제 메모리 값은 1바이트만 바뀌게 됩니다.</p>
+
<p><span style="font-family: malgun;">다만, 워드(4바이트) 연산이 아닌 바이트 연산을 위한 STR<span style="color: #ff9900;"><strong>B</strong></span>를 사용하고 있으므로, 실제 메모리 값은 1바이트만 바뀌게 됩니다.</span></p>
<p>아래의 그림에서 실행 전/후를 비교해 보시기 바랍니다.</p>
+
<p><span style="font-family: malgun;">아래의 그림에서 실행 전/후를 비교해 보시기 바랍니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 전 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: malgun;">실행 전 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430961365.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-07/1430961365.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 후 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: malgun;">실행 후 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430961377.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: malgun;"><img src="/data/wiki/2015-05-07/1430961377.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>이상으로 간단히 레지스터값을 오프셋으로 사용한 LDR/STR 연산에 대해 살펴보았습니다.</p>
+
<p><span style="font-family: malgun;">이상으로 간단히 레지스터값을 오프셋으로 사용한 LDR/STR 연산에 대해 살펴보았습니다.</span></p>
<p>잘못된 점이나 추가 문의사항은, TRACE32@mdstec.com 으로 연락 부탁드립니다.</p>
+
<p><span style="font-family: malgun;">잘못된 점이나 추가 문의사항은, TRACE32@hancommds.com 으로 연락 부탁드립니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</p>
+
<p><span style="font-family: malgun;">"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</span></p>

2020년 7월 24일 (금) 12:48 기준 최신판

이번엔 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@hancommds.com 으로 연락 부탁드립니다.

 

"TRACE32로 바라본 ARM - Cortex-M" 으로 돌아가기