ARM의 의사(Pseudo) 명령은 실제로 ARM의 명령어 디코더에 정의되어 있는 명령이 아니고, 어셈블러에서 지원하는 명령이다.
종류
ADR, ADRL, NOP, ALIGN, DCx
ADR : 어드레스를 읽어오는 명령
ADR{cond} Rd, <expression>
{cond}는 조건부 실행을 위한 조건을 나타낸다.
Rd는 ARM의 범용 레지스터로 어드레스를 읽어서 저장될 레지스터이다.
<expression>은 읽어올 어드레스의 위치를 나타내며, 라벨 형태로 표현된다.
<expression>에 표현될 수 있는 라벨의 어드레스 범위는, word-aligned로 되어 있는 경우 PC 값을 기준으로 ±1020바이트이다.
ADR 명령은 <expression>의 주소 값을 Rd에 저장한다. 실제 동작될 때는 주소 값을 읽어오기 위해 하나의 ADD나 SUB 같은 명령을 사용하여 주소를 계산한다.
예)
start MOV r0, #10
ADR r4, start ; start 라벨의 주소를 r4에 저장한다. 실제 동작은 SUB r4, PC, #0xC가 된다.
ADRL : 어드레스를 읽어오는 명령으로 ADR과 유사하지만 보다 광범위한 어드레스 범위를 읽어올 수 있다.
ADR{cond}L Rd, <expression>
{cond}는 조건부 실행을 위한 조건을 나타낸다.
Rd는 ARM의 범용 레지스터로 어드레스를 읽어서 저장될 레지스터이다.
<expression>은 읽어올 어드레스의 위치를 나타내며, 라벨 형태로 표현된다.
<expression>에 표현될 수 있는 라벨의 어드레스 범위는, word-aligned로 되어 있는 경우 PC 값을 기준으로 ±256K바이트이다.
ADR 명령은 <expression>의 주소 값을 Rd에 저장한다. 실제 동작될 때는 주소 값을 읽어오기 위해 하나의 ADD나 SUB 같은 명령을 사용하여 주소를 계산한다.
예)
start MOV r0, #10
ADRL r4, start ; start 라벨의 주소를 r4에 저장한다. 실제 동작은 ADD r4, PC, #0xE800
ADD r4, r4, #0x254 와 같이 사용되어 계산된 주소가 r4에 저장한다.
NOP : NOP 명령이 사용되면 프로세서에 아무런 영향 없이 한 프로세서 사이클을 소비한다.
NOP
NOP는 'MOV r0, r0'로 코드가 생성되어 사용된다.
ALIGN : 메모리 내의 코드 또는 데이터의 배치를 워드 단위 경계로 정렬한다.
DCx : 데이터를 선언한다.
DCB : 바이트 데이터(byte data)
DCW : 하프워드데이터(half word data)
DCD : 워드데이터(word data)
DCS : 255바이트까지의 문자열 데이터
DCF : Floating Point Data
예)
DCB 0x12
DCD 0x12345678
DCS "hello"
출처 : http://blog.naver.com/luis8282?Redirect=Log&logNo=20077512659
[출처] ARM의 의사 명령어|작성자 piao