명령

명령

[ instruction ]

요약 컴퓨터에게 일을 시키는 단위로, 컴퓨터가 알아들을 수 있는 기계어로 이루어져 있는 명령어이다. 명령부(명령코드부:OP code)와 처리부(피연산자부:operand)로 나눠지며, 명령은 자료 이동 명령(data movement), 산술 및 논리연산(arithmetic and logic operation), 비교 및 검사(compare and test), 분기(branch, jump), 서브루틴 호출과 복귀(subroutine call and return) 등이 있다.

컴퓨터는 일정한 문법과 용어, 즉 컴퓨터가 이해할 수 있는 언어인 기계어(machine language)로 작성된 프로그램을 받아들인 후, 그 지시에 따라 움직인다. 이 기계어 프로그램에서 사용하는 동작 지시가 명령(instruction)이다. 그러므로 명령은 컴퓨터 프로그램의 기본으로서 컴퓨터 동작을 지시하는 부호 단위인 셈이다.

구성은 명령부(명령코드부:OP code)와 처리부(피자부:operand)로 되어 있다. 명령부는 실제 컴퓨터가 수행해야 할 동작을 나타내는 동사에 해당하고, 처리부는 그 동작의 대상이 되는 데이터를 지정하므로 목적어에 해당한다. 따라서 명령부 내용은 주로 및 논리연산, 데이터 이동, 분기(branch), 입출력, 그외의 제어명령이 되며, 처리부는 피연산자를 직접 나타내거나 피연산자가 기억된 레지스터 또는 의 주소를 나타낸다. 기계어 명령은 컴퓨터의 기종에 따라 다르지만 대부분의 컴퓨터에서 사용되는 공통적인 명령 부류가 있는데, 대개 다음과 같다.

-자료 이동 명령(data movement) : 레지스터와 레지스터 간, 레지스터와 기억장치, 기억장치 상호 간에 자료를 옮긴다. 일반적으로 이동(move) 명령을 쓰지만 레지스터에 옮기는 로드(load)와 기억장치에 옮기는 저장(store) 명령을 구별하는 컴퓨터도 있다.

-산술 및 논리연산(arithmetic and logic operation) : 가감승제의 사칙연산과 'AND', 'OR', 'NOT', 'XOR' 등의 논리연산, 그리고 시프트(shift)와 로테이트(rotate) 명령이 있다.

-비교 및 검사(compare and test) : 두 값을 비교하여 플래그를 변화시키거나, 0인지 검사하는 명령이 있다. 대개 조건 분기 명령과 함께 쓰이며, 개중에는 워드의 특정 비트만 검사할 수 있는 컴퓨터도 있다.

-분기(branch, jump) : 크게 조건부 분기(conditional branch)와 무조건 분기(unconditional branch)로 나누는데, 조건부 분기는 산술 및 논리연산이나 비교 명령에 의해 결정된 상태 플래그에 따라 분기를 수행하고, 무조건 분기는 지정된 주소로 바로 제어를 옮긴다.

- 호출과 복귀(subroutine call and return) : 서브루틴을 호출하거나 주 프로그램으로 돌아온다. 이때는 보통 스택(stack:자료구조의 하나)에 복귀 주소가 저장된다.

-입출력(input/output) : 입출력 포트에 데이터를 읽거나 쓴다. 그러나 기억장치 대응 입출력(memory mapped I/O) 방식을 채택한 컴퓨터는 따로 입출력 명령이 없고 기억장치의 특정 주소를 액세스하는 것이 입출력이 된다.

-CPU 상태 조절 : CPU의 상태를 사용자 상태(user state)와 수퍼바이저 상태(supervisor state)로 변환하고, 컴퓨터의 작동을 잠시 정지하기도 한다.

참조항목

, , ,

역참조항목

카테고리

  • >