"LDR and STR, data width"의 두 판 사이의 차이

TRACE32
이동: 둘러보기, 검색
(새 문서: <p>ARM에서 지원하는 데이터 타입은 words(32-bit), halfwords(16-bit), bytes(8-bit) 가 있습니다.</p> <p>LDR/STR 명령도 위의 데이터 타입들을 지원하기 위...)
 
 
(같은 사용자에 의한 하나의 중간 편집이 숨겨짐)
1번째 줄: 1번째 줄:
<p>ARM에서 지원하는 데이터 타입은 words(32-bit), halfwords(16-bit), bytes(8-bit) 가 있습니다.</p>
+
<p><span style="font-family: nanum;">ARM에서 지원하는 데이터 타입은 words(32-bit), halfwords(16-bit), bytes(8-bit) 가 있습니다.</span></p>
<p>LDR/STR 명령도 위의 데이터 타입들을 지원하기 위해 다음과 같은 형태를 가지고 있습니다.</p>
+
<p><span style="font-family: nanum;">LDR/STR 명령도 위의 데이터 타입들을 지원하기 위해 다음과 같은 형태를 가지고 있습니다.</span></p>
<p>32-bit words : LDR/STR</p>
+
<p><span style="font-family: nanum;">32-bit words : LDR/STR</span></p>
<p>16-bit halfwords : LDR<span style="color: #ff9900;"><strong>H</strong></span>/STR<span style="color: #ff9900;"><strong>H</strong></span></p>
+
<p><span style="font-family: nanum;">16-bit halfwords : LDR<span style="color: #ff9900;"><strong>H</strong></span>/STR<span style="color: #ff9900;"><strong>H</strong></span></span></p>
<p>8-bit bytes : LDR<span style="color: #ff9900;"><strong>B</strong></span>/STR<span style="color: #ff9900;"><strong>B</strong></span></p>
+
<p><span style="font-family: nanum;">8-bit bytes : LDR<span style="color: #ff9900;"><strong>B</strong></span>/STR<span style="color: #ff9900;"><strong>B</strong></span></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>아래의 샘플을 통해서 간단히 알아보도록 하겠습니다.</p>
+
<p><span style="font-family: nanum;">아래의 샘플을 통해서 간단히 알아보도록 하겠습니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p><span style="color: #3366ff; font-size: large;"><strong>32-bit words</strong></span></p>
+
<p><span style="color: #3366ff; font-size: large; font-family: nanum;"><strong>32-bit words</strong></span></p>
<p>LDR 명령을 통해 메모리에서 4바이트를 레지스터로 복사(Load)하거나,&nbsp;</p>
+
<p><span style="font-family: nanum;">LDR 명령을 통해 메모리에서 4바이트를 레지스터로 복사(Load)하거나,&nbsp;</span></p>
<p>STR 명령을 통해 레지스터값 4바이트를 메모리로 적습니다(Store).</p>
+
<p><span style="font-family: nanum;">STR 명령을 통해 레지스터값 4바이트를 메모리로 적습니다(Store).</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>아래의 경우, R0의 값(0x0800_4E00)을 R13+0x4 번지인 0x2000_2414번지에 적어 넣게 됩니다.</p>
+
<p><span style="font-family: nanum;">아래의 경우, R0의 값(0x0800_4E00)을 R13+0x4 번지인 0x2000_2414번지에 적어 넣게 됩니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 전 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;">실행 전 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430963952.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430963952.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: nanum;">실행 후 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430963961.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430963961.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p><span style="font-size: large;"><strong><span style="color: #3366ff;">16-bit halfwords</span></strong></span></p>
+
<p><span style="font-size: large; font-family: nanum;"><strong><span style="color: #3366ff;">16-bit halfwords</span></strong></span></p>
<p>LDR 명령을 통해 메모리에서 2바이트를 레지스터로 복사(Load)하거나,&nbsp;</p>
+
<p><span style="font-family: nanum;">LDR 명령을 통해 메모리에서 2바이트를 레지스터로 복사(Load)하거나,&nbsp;</span></p>
<p>STR 명령을 통해 레지스터값 2바이트를 메모리로 적습니다(Store).</p>
+
<p><span style="font-family: nanum;">STR 명령을 통해 레지스터값 2바이트를 메모리로 적습니다(Store).</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>아래의 경우, R0의 값(0x0040)을 R1번지인 0x2000_1C40번지에 적어 넣게 됩니다.</p>
+
<p><span style="font-family: nanum;">아래의 경우, R0의 값(0x0040)을 R1번지인 0x2000_1C40번지에 적어 넣게 됩니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 전 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;">실행 전 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430964171.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430964171.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 후 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;">실행 후 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430964179.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430964179.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p><span style="font-size: large; color: #3366ff;"><strong>8-bit bytes</strong></span></p>
+
<p><span style="font-size: large; color: #3366ff; font-family: nanum;"><strong>8-bit bytes</strong></span></p>
<p>LDR 명령을 통해 메모리에서 1바이트를 레지스터로 복사(Load)하거나,&nbsp;</p>
+
<p><span style="font-family: nanum;">LDR 명령을 통해 메모리에서 1바이트를 레지스터로 복사(Load)하거나,&nbsp;</span></p>
<p>STR 명령을 통해 레지스터값 1바이트를 메모리로 적습니다(Store).</p>
+
<p><span style="font-family: nanum;">STR 명령을 통해 레지스터값 1바이트를 메모리로 적습니다(Store).</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>아래의 경우, R2의 값(0x00)을 R0+R1번지인 0x2000_1A84번지에 적어 넣게 됩니다.</p>
+
<p><span style="font-family: nanum;">아래의 경우, R2의 값(0x00)을 R0+R1번지인 0x2000_1A84번지에 적어 넣게 됩니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 전 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;">실행 전 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430964443.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430964443.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p style="padding-left: 30px;">실행 후 :</p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;">실행 후 :</span></p>
<p style="padding-left: 30px;"><img src="/data/wiki/2015-05-07/1430964454.jpg" alt="" /></p>
+
<p style="padding-left: 30px;"><span style="font-family: nanum;"><img src="/data/wiki/2015-05-07/1430964454.jpg" alt="" /></span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<p>이상으로 워드, 하프워드, 바이트 단위로 메모리에 읽고 쓰는 명령에 대해 간단히 살펴보았습니다.</p>
+
<p><span style="font-family: nanum;">이상으로 워드, 하프워드, 바이트 단위로 메모리에 읽고 쓰는 명령에 대해 간단히 살펴보았습니다.</span></p>
<p><span>잘못된 점이나 추가 문의사항은 TRACE32@mdstec.com 으로 연락 부탁드립니다.</span></p>
+
<p><span style="font-family: nanum;">잘못된 점이나 추가 문의사항은 TRACE32@hancommds.com 으로 연락 부탁드립니다.</span></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</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: nanum;">"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</span></p>

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

ARM에서 지원하는 데이터 타입은 words(32-bit), halfwords(16-bit), bytes(8-bit) 가 있습니다.

LDR/STR 명령도 위의 데이터 타입들을 지원하기 위해 다음과 같은 형태를 가지고 있습니다.

32-bit words : LDR/STR

16-bit halfwords : LDRH/STRH

8-bit bytes : LDRB/STRB

 

아래의 샘플을 통해서 간단히 알아보도록 하겠습니다.

 

 

32-bit words

LDR 명령을 통해 메모리에서 4바이트를 레지스터로 복사(Load)하거나, 

STR 명령을 통해 레지스터값 4바이트를 메모리로 적습니다(Store).

 

아래의 경우, R0의 값(0x0800_4E00)을 R13+0x4 번지인 0x2000_2414번지에 적어 넣게 됩니다.

 

실행 전 :

 

 

실행 후 :

 

 

 

16-bit halfwords

LDR 명령을 통해 메모리에서 2바이트를 레지스터로 복사(Load)하거나, 

STR 명령을 통해 레지스터값 2바이트를 메모리로 적습니다(Store).

 

아래의 경우, R0의 값(0x0040)을 R1번지인 0x2000_1C40번지에 적어 넣게 됩니다.

 

실행 전 :

 

실행 후 :

 

 

 

8-bit bytes

LDR 명령을 통해 메모리에서 1바이트를 레지스터로 복사(Load)하거나, 

STR 명령을 통해 레지스터값 1바이트를 메모리로 적습니다(Store).

 

아래의 경우, R2의 값(0x00)을 R0+R1번지인 0x2000_1A84번지에 적어 넣게 됩니다.

 

실행 전 :

 

실행 후 :

 

 

이상으로 워드, 하프워드, 바이트 단위로 메모리에 읽고 쓰는 명령에 대해 간단히 살펴보았습니다.

잘못된 점이나 추가 문의사항은 TRACE32@hancommds.com 으로 연락 부탁드립니다.

 

 

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