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) 에서는 산술 연산들을 알아보자.
'시스템 프로그래밍 > - 강의 정리' 카테고리의 다른 글
시스템 프로그래밍 - 4 (3) : Data Processing Instructions - Comparisons (0) | 2012.04.05 |
---|---|
시스템 프로그래밍 - 4 (2) : Data Processing Instructions - Arithmetic operations (0) | 2012.04.05 |
시스템 프로그래밍 - 3 : Load / Store Instructions (0) | 2012.04.05 |
시스템 프로그래밍 - 2 : System Data Structure (시스템 데이터 구조) (0) | 2012.04.04 |
시스템 프로그래밍 - 1 (2) : ARM(SoCs) 개발, 공부를 위한 환경 구축하기 (0) | 2012.03.12 |