본문 바로가기
CS 공부/컴퓨터 구조

명령어 구성과 형식

by 학습하는 청년 2024. 12. 31.

최종 수정 : 24.12.31

명령어 구성과 형식

컴퓨터는 일련의 명령어들로 구성된 프로그램을 하나씩 중앙처리장치로 가져와서 해독하고 실행한다. 명령어는 중앙처리장치가 순차적으로 명령어들을 실행하는 데 필요한 정보를 모두 포함하고 있어야 한다.


1. 명령어 구성 요소

1) 동작 코드(opcode)

실행해야 할 동작을 2진수로 표현한 코드이다. 연산 코드로 변역하기도 한다.

 

2) 오퍼랜드(operand)

동작을 실행할 대상, 즉 처리할 데이터를 나타낸다.

  • 소스 오퍼랜드(source operand) : 동작 코드가 처리할 대상이다.
  • 목적지 오퍼랜드(destination operand) : 처리한 결과를 저장할 장소이다.

3) 다음 명령어 참조

현재 수행하는 명령어를 종료한 다음에 실행할 명령어가 어느 것인지 지칭한다.


2. 명령어 형식

컴퓨터의 명령어 형식은 중앙처리장치의 구조와 관계가 있다. 명령어는 모드필드(mode field), 연산코드필드, 주소필드로 구분한다.

모드필드 연산코드필드 주소필드
  • 모드필드는 I로 표시하며 I = 0이면 직접주소지정방식(direct addressing mode)이고, I = 1이면 간접주소지정방식(indirect addressing mode)이다.

  • 연산코드는 연산의 종류에 따라 함수연간시능(function operation), 전달기능(transfer operation), 제어기능(control operation), 입출력기능(input output operation)으로 구분한다.

1) 함수연산기능

CPU에서 데이터를 처리하는 모든 연산자의 기능이며 덧셈, 시프트, 보수 등의 산술연산과 AND, OR, NOT, EXOR 등의 논리연산을 수행하는 기능이다.

 

2) 전달기능

CPU 내의 레지스터 간의 정보전송과 CPU와 주기억장치 사이의 정보 전달기능으로 load, store 기능을 수행한다.

 

3) 제어기능

명령어가 순서대로 수행되는 것이 아니라 조건에 따라 수행순서가 달라지는 기능으로 프로그램의 흐름을 제어하는 기능이다. 일반적인 제어기능 명령어로는 분기(branch), 스킵(skip), 서브루틴 함수호출(subroutine call)기능 등이 있다.

 

4) 입출력기능

입력장치에서 들어온 데이터를 프로그램으로 수행한 결과를 출력장치에 보내서 유저가 확인할 수 있도록 하는 기능이다. 즉, 주기억장치와 입출력장치 사이의 정보교환기능이다.

기능 명령어 특성
함수연산 ADD X
AND X
CMA
CLC
CLA
ROL
ROR
AC ← AC + M[X]
AC ← AC ∧ M[X], and 연산
AC ← AC'
carry bit ← 0
AC ← 0(Clear)
carry와 AC를 1비트 좌측 로테이트
carry와 AC를 1비트 우측 로테이트
전달 LDA X
STA X
AC ← M[X], cpu ← memory
M[X] ← AC, memory ← cpu
제어 JMP X
SNA
SZA
PC ← X, X번지로 jump
AC < 0이면 PC ← PC + 1 (skip)
AC = 0이면 PC ← PC + 1 (skip)
입출력 INP X
OUT X
AC ← 입력장치 X번지
출력장치 X번지 ← AC

3. 0 - 주소 명령어

스택 구조의 컴퓨터에서 사용도며 주소필드가 생략된 형식이다. 주소는 슽택 포인터(SP ; Stack Pointer)에 명시되어 있다. 대표적인 명령어로는 PUSH 명령어(데이터가 레지스터에서 메모리로 이동), POP 명령어(데이터가 메모리에서 레지스터로 이동)가 있다. LIFO(Last In First Out) 방식은 가장 나중에 저장한 메모리 번지를 SP가 지정하고 있고, 데이터를 읽어 오는 경우는 가장 나중에 저장한 데이터부터 읽히는 방식이다. empty 상태와 full 상태로 구분하여 데이터를 읽고 쓴다.

OP 코드

 

F = (A + B) * (C + D)의 실행과정을 0 - 주소 명령어 형식으로 프로그램한 예.

  • TOS(Top Of Stack)는 SP가 표시하는 최상단 주소이다.
연산코드 주소필드 특성
PUSH A TOS ← A
PUSH B TOS ← B
ADD   TOS ← A +B
PUSH C TOS ← C
PUSH D TOS ← D
ADD   TOS ← (C + D)
MUL   TOS ← (C + D) * (A + B)
STORE F M[F] ← ToS

4. 1 - 주소 명령어

1 - 주소방식은 단일 누산기 방식의 컴퓨터에서 사용되며, 연산코드(op code)와 1개의 주소필드로 구성되는 방식이다. 누산기와 오퍼랜드(operand), 즉 주소의 내용과 연산을 한 후에 결과값은 다시 누산기에 저장되는 형식이다. 수행 전 누산기의 내용은 수행 후에는 잃어버린다.

명령 코드 주소

 

F = (A + B) * (C + D)의 실행과정을 1 - 주소 명령어 형식으로 프로그램한 예.

연산코드 주소필드 특성
LOAD A AC ← M[A]
ADD B AC ← AC + M[B]
STORE T M[T] ← AC
LOAD C AC ← M[C]
ADD D AC ← AC + M[D]
MUL T AC ← AC * M[T]
STORE F M[F] ← AC

5. 2 - 주소 명령어

2 - 주소방식은 범용 레지스터 구조의 컴퓨터에서 사용되며 연산코드와 2개의 주소필드로 구성된다. 주소필드는 레지스터 필드이거나, 주기억장치의 주소를 지정한다. ADD 명령어를 사용하는 경우에는 입력으로 사용했던 어드레스1(Address1)의 내용은 실행 후에 출력값으로 저장되므로 원래의 입력값을 잃게 된다.

명령 코드 주소 - 1 주소 - 2 

 

F = (A + B) * (C + D)의 실행과정을 2 - 주소 명령어 형식으로 프로그램한 예

연산코드 주소 - 1 주소 - 2 특성
MOV R0 A R0 ← M[A]
ADD R0 B R0 ← R0 + M[B]
MOV R1 C R1 ← M[C]
ADD R1 D R1 ← R1 + M[D]
MUL R0 R1 R0 ← R0 * R1
MOV F R0 M[F] ← R0

6. 3 - 주소 명령어

3 - 주소방식은 2 - 주소방식과 같은 범용 레지스터 구조의 컴퓨터에서 사용되며 연산코드와 3개의 주소필드로 구성된다. 주소필드는 레지스터나, 주기억장치의 주소를 지정한다. ADD 명령어를 사용하는 경우에는 입력 데이터는 어드레스2(Address1)와 어드레스3(Address3)의 내용이고 출력 데이터는 어드레스1(Address3)에 저장된다. 따라서 입력내용을 잃지 않는다. 3 - 주소 명령어는 프로그램이 간단하다는 장점은 있지만 명령어의 길이가 너무 길다는 단점이 있다.

 

명령 코드 주소 - 1 주소 - 2 주소 - 3

 

F = (A + B) * (C + D)의 실행과정을 2 - 주소 명령어 형식으로 프로그램한 예

연산코드 주소 - 1 주소 - 2 주소 - 3 특성
ADD R0 A B R0 ← M[A] + M[B]
ADD R1 C D R1 ← M[C] + M[D]
MUL F R0 R1 M[F] ← R0 * R1

참고

독학사 교재

'CS 공부 > 컴퓨터 구조' 카테고리의 다른 글

명령어 종류  (0) 2025.01.01
주소지정방식  (0) 2025.01.01
수의 표현  (0) 2024.12.31
보수  (0) 2024.12.31
진법과 진법변환  (0) 2024.12.31

댓글