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

+ Recent posts