Hard Ware/ARM

ARM 명령어 및 역할

달려가보자 2012. 5. 17. 01:59

 

ARM

-ARM 명령어는 전형적으로 2개의 소스레지스터 Rn,Rm   하나의 결과 레지스터인 Rd를 가짐

-Rm ALU로 입력 되기 전에 배럴시프터를 거쳐 미리 선처리 작업을 할 수 있다.

-ARM 레지스터들은 한번에 최대 18개까지 활성화 할 수 있다.

-r0~r15까지의 데이터 레지스터 16개와 cpsr , spsr 프로그램 상태 레지스터

-ARM 프로세서는 특별한 작업이나 특수한 기능을 수행하기 위한 3개의 레지스터(r13~r15)

-cpsr :  32비트 이며 현재 상태를 저장하는 레지스터 이다.

           8비트씩 플래그, 상태, 확장, 제어 로 나누워져 있다.(상태와 확장은 현재 예약 상태이다)

-abort 모드 : 메모리 액세스 실패 시 발생하는 모드

- FlQ IRQ 모드 : 2가지 인터럽트 레벨을 위한 모드

-supervisor 모드 : 리셋 시 발생하는 모드

-system 모드 : user 모드의 특수한 버전으로 cpsr 레지스터를 읽고 쓰기가 가능하다.

 

-user 모드를 제외한 cpsr의 레지스터에서 비트를 직접제어함으로써 모드를 변경할수 있다.

단 여기서 cpsr를 직접 제어시 spsr에 복사는 이루어 지지 않는다.

 

-ARM ALU로 입력되기전에 배럴시프터에 의해 2진 단위로 좌우 시프트가 가능하다.

-이를 통해 많은 데이터 처리 명령어의 강력함과 유연성이 증진된다.

MUL, CLZ, QADD 명령어에서는 제외이다.

XLSLY  à X << Y

XLSRY à X >> Y

뺄셈 ex) SUB r0 , r1, r2  à r0 = r1-r2

시프트 ex) MOVS r0,r1,LSL #1  à r0 = r1<<1

명령어에 S 가 붙어 있으므로 cpsr 안의 C 플래그가 업데이트 된다.

복사 ex) r5 = 5, r7 = 8,  MOV r7 ,r5

반전 ex) RSB r0,r1, #0 à r0 = ~(0 – r1)

 

SUBS는 루프문에서 카운터를 감소시킬때에 사용하면 유용하다

Ex) SUBS r1,r1,#1   à r1 = r1 – 1

ADD r0 ,r1,r1,LSL #1  à r0 = r1+(r1<<1)

 

논리명령어

-       AND , ORR, EOR,BIC(AND NOT)

-       논리명령어는 S 접미사가 있을경우에만 cpsr 플래그를 업데이트 한다.

비교명령어

-       CMN <- 음수비교

-       CMP <- 양수 비교(CMP 명령어는 실제로는 뺄셈명령어와 같으나 결과가 반영 되지 않음)

-       TEQ 32비트값에 같을시 비교

-       TST 32비트값의 테스트비트

-       오직 cpsr 의 상태 비트만을 업데이트 한다.

 

곱셈명령어

-       64비트 곱셈 명령어는 64비트를 표현하는 2개의 레지스터를 이용하여 곱셈한다.

-       곱셈결과는 하나의 결과 레지스터에 저장하거나 2개의 레지스터를 이용하여 저장

Ex) MUL r0,r1,r2  <- r0 = r1*r2

 

-64비트 곱셈 명령어(SMLAL, SMULL, UMLAL, UMULL)

-32비트 레지스터에 저장하기에 너무 크기 때문에 RDLo RDHi라는 레이블이 붙은

2개의 레지스터에 저장

 

분기명령어

-실행의 흐름을 변경하거나 어떤 루틴을 호출하는데 사용

-서브루틴 이나 if-then-else 구조 , 루프문에 사용

-PC가 새로운 주소를 가리키도록 함으로써 실행의 흐름을 바꾼다.

 

 

다중레지스터전송명령어

-       하나의 명령어로 메모리와 프로세서 사이에서 여러 개의 레지스터를 전송

-       장점

n  메모리에서 여러블록의 데이터를 전송하거나 문맥과 스택을 저장하고 복구하는데

단일 전송 레지스터 보다 효과적이다.

-       단점

n  다른 명령어가 실행되지 못하게 하기 때문에 인터럽트 지연을 증대한다.

 

SWI명령어

-       프로세서 모드를 SVC로 변경시켜 운영체제루틴이 특권모드에서 호출될수 있도록 해줌

 

'Hard Ware > ARM' 카테고리의 다른 글

ARM에 관련한 용어들  (0) 2012.05.16