Data Processing Instructions

Logical Operations

 

Data Processing Instructions 은 ARM instructions 중에 가장 커다란 집합체로 많은 연산들이 있다. 다 다루지는 않고, 꼭 필요한, 많이 사용하는 명령어들을 간단하게 알아볼것이다. 가장 큰 집합체인 만큼, Data Processing Instructions 에는 몇 개의 Operations 로 나누어진다. 그 중 처음으로 알아볼 것은 Logical operations 이다. 

 

시스템 프로그래밍 - 4 (1) : Data Processing Instructions - Logical operations

 

+ 모든 Data Processing Instructions 은 오직 레지스터에서만 실행된다. 절대로 메모리에서 실행되지 않는다.

 

 

 - Operation examples ( #5 는 '상수 number' 5 를 뜻한다. )

 

-    MOV    r0, r1         @ r0 ß r1

r1 에 있는 값을 r0 에 넣는다 

-    MVN    r0, #7        @ r0 ß ~ 7

MOV + NOT = #7 을 NOT 한 결과를 r0 에 넣는다

-    AND    r0, r1, r2     @ r0 ß r1 & r2 

r1 과 r2 를 AND 한 결과를 r0 에 넣는다

-    ORR    r0, r1, #6     @ r0 ß r1 | 6

r1 과 #6 를 OR 한 결과를 r0 에 넣는다

-    EOR   r0, r1, r2       @ r0 ß r1 ^ r2

r1 과 r2 를 XOR(=Exclusive OR) 한 결과를 r0 에 넣는다

-    BIC   r0, r1, #7       @ r0 ß r1 & ~ 7

Bit Clear 라는 개념으로, 7 이 [00000111] 인데, 1이 있는 자리에서는 무조건 0 의 결과가 나오며

0이 있는 자리는 위에 피연산자인 r1 의 결과가 그대로 내려온다. (0이면 0, 1이면 1)

01101001 = r1 값 : Bit Clear 는 필터 개념으로 이해하면 쉽다.

01010101 ( 0인 곳은 위에 값을 아래로 내려보낸다. )

00101000 = BIC 의 결과

 

 

 - Basic Instruction form

 

위에 나열된 Instructions 를 보면 일반적으로 XXX (연산, 작업의 이름) + r1, r3, r2 이런 형식을 가졌다는 것을 알아볼 수 있다. 얼핏 보기에는 그저 원하는 연산이나 작업에 따라 r0 이나 #3 같은 것들을 나열한 것으로 보일 수도 있으나, 꼭 지켜야만 하는 정형화된 형태가 있다.

 

컴퓨터는 알다시피 두뇌를 가진 인간처럼 능동적으로 생각할 수 없는 기계에 불과하기에, 항상 정형화된 형태 form 에 맞추어 컴퓨터에게 하나 하나 꼼꼼하게 알려주어야지 그때서야 컴퓨터는 작동을 올바르게 수행한다.

 

ARM Instruction 을 사용하기 위한 Format 은 각 Instruction 의 종류에 따라 각각 32 bits 의 사용 가능한 '방'이 주어진다. 이 '방'에는 그 Instruction 실행에 대한 여러 옵션들을 추가해줄 수 있다. 예를들어 단순한 '+' 덧셈 (빨강)Instruction 에 '어떠한 조건이 만족되면 + 덧셈', '+ 덧셈 후 맨 첫번째가 0인지 1인지', '꼭 무엇과 무엇을 덧셈 +' 등 Instruction을 실행하는데 필요한 '추가적인 조건(cond)', '피연산자(operand : rm, rn...)', '목적지(destination : rd)' 등등의 요소들이 담길 장소들이 이 32 bits 의 전체 방에 각 자신이 들어가야할 위치를 지니게 된다.

 

[ 32 비트 구성 그림의 예시 ]

 

우리는 이에 따라 반드시 각자 할당된 장소에 따라 그 장소에 알맞은 값들 (cond? rm? rn? rd?) 을 넣어야 한다. 

 

기본적인 instruction form을 단순하게 정리하자면 아래와 같다.

( ARM 에는 정말 많은 instruction set 들이 있으며, 그 중 한 set 이 우리가 이번 4 장에서 배우는

Data Processing set 이다. 아래의 format 은 Data Processing / PSR Transfer 에 대한 포맷일 뿐이다.

다른 set 에 대한 instruction format 을 알고싶다면 인터넷 검색, 서적들을 찾아보길 권장한다.)

[ Formats of ARM Instruction set : http://blog.naver.com/suyguy17?Redirect=Log&logNo=146022731 ]

 

XXX    rd, rm, op               rd : destination 목적 register 가 들어가야한다 ( ex. r1 )

                                    rn : source register

                                    rm : source register - First operand 피연산자 register

                                    op : Second operand 피연산자 무엇이든지 된다. Constant, register 등등

 

( MOV 와 MVN 은 First operand 가 없고, Second operand 만 있으므로, Constant, register 무엇이든지 사용가능 )

 

이렇게해서 기초적인 Logical Operations 와 Basic Instruction form 를 알아보았다.

다음 장 4 (2) 에서는 산술 연산들을 알아보자.

 

 

 

 

 

 

Posted by 하늘_