비전공자 공부일기/:: Computer Science

[전산기초] 명령어 (= 인스트럭션 Instruction)

와니_ 2021. 7. 8. 00:35

1. 명령어의 구성

컴퓨터에서 실행되는 명령어는 크게

1) 연산자가 표시되는 연산자부(Operation Code)

2) 연산의 수행에 필요한 자료의 정보가 표시되는 자료부(Operand) 로 구성

** 전산 출제문제에서 명령어를 '인스트럭션(Instruction)이라고 부르기도 함

 

* 연산자(Operation Code)부

- 수행해야 할 동작에 맞는 연산자를 표시

- 흔히 OP-Code부라고 하며, 명령부라고 부르기도 함

- 연산자부의 크기(비트 수)는 표현할 수 있는 명령의 종류를 나타냄

  --> nBit일 때 최대 2의 n승 개 명령어 사용 가능

- 명령어 형식, 동작코드, 데이터 종류 등을 표시

 

* 자료(Operand)부

- 실제 데이터에 대한 정보를 표시

- 기억장소의 주소, 레지스터 번호, 사용할 데이터, 명령어 순서 등을 표시

- 주로 연산에 사용할 자료의 주소를 표시하므로 주소부(Address), 번지부라고 부르기도 함

 

2. 연산자(Operation code)의 기능

: 연산자(Operation Code)의 기능에는 함수 연산, 자료 전달, 제어, 입출력 기능이 있음

 

1) 함수 연산 기능

- 산술 연산: ADD, SUB, MUL, DIV, 산술 Shift 등

- 논리 연산: NOT, AND, OR, XOR, 논리적 Shift, Rotate, Complement, Clear 등

 

2) 자료 전달 기능

CPU와 기억장치 사이에서 정보를 교환하는 기능

- Load : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령

- Store : CPU에 있는 정보를 기억장치에 기억시키는 명령

 

3) 제어 기능

명령의 실행 순서를 변경시킬 때 사용하는 명령

- 무조건 분기 명령 : GOTO, Jump(JMP) 등

- 조건 분기 명령 : IF 조건

 

4) 입출력 기능

CPU ~ I/O장치 또는 메모리 ~ I/O장치 사이에서 자료를 전달하는 기능

 

3. 명령어 형식

Operand부의 개수에 따라서 다음의 4가지 명령어 형식이 있다.

- 3주소 명령어(3 Address Instruction)

- 2주소 명령어(2 Address Instruction)

- 1주소 명령어(1 Address Instruction)

- 0주소 명령어(0 Address Instruction)

 

예를들어 3주소 명령어라 한다면

  [Op-Code]-[Operand1(자료1의 주소)]-[Operand2(자료2의 주소)]-[Operand3(자료3의 주소)]  형태로 되어있음

 

1) 3주소 명령어

- Operand부가 3개로 구성

- 여러 개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용

 

2) 2주소 명령어

- 가장 일반적으로 사용

- 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용

- 연산의 결과는 주로 Operand 1에 저장되며, 이 때 Operand1에 있던 원래의 자료가 파괴

 

3) 1주소 명령어

- Operand부가 1개로 구성

- 명령어 형식의 컴퓨터는 *누산기(AC; Accumulator)를 이용하여 명령어 처리

 

4) 0주소 명령어

- Operand부 없이 OP-Code부만으로 구성

- 주소사용 없이 *스택에 연산자와 피연산자를 넣었다 꺼내어 연산한 후, 결과를 다시 스택에 넣으면서 연산

  --> 원래의 자료가 남지 않음

 

*** 스택(Stack)

: 스택은 자료의 삽입-삭제 작업이 한쪽 방향에서만 가능할 수 있도록 할당ㅁ한 메모리의 일부

- 후입선출(*LIFO) 방식으로 자료 처리

- 삽입명령은 Push(), 삭제명령은 Pop()