LDR and STR, data width
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" 으로 돌아가기