LDR and STR, data width

TRACE32
Admin (토론 | 기여) 사용자의 2015년 5월 7일 (목) 11:26 판

이동: 둘러보기, 검색

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

 

 

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