[전자계산기] 명령어
명령어(Instruction)
명령어의 구조
명령어는 여러 동작을 실행하는데 필요한 정보를 가지고 있으며, 모든 컴퓨터에서 기본적으로 수행될 연산자와 그 연산에 사용할 대상체로 구성
-
연산자(Operation, Op-Code)
컴퓨터가 행하는 동작을 기호화해서 나타낸 정보로 연산자의 종류, 명령어 형식, 자료 종류 등의 정보를 나타내며, 명령어의 개수를 몇 개 사용할 것인지에 따라 사용 비트 수가 결정된다.Op-Code가 N비트이면 생성될 수 있는 명령어의 개수는 2N개
-
모드(Mod)
대상체를 지정하는 방법으로 보통 직접 주소와 간접 주소로 구분 -
주소(Address)
처리할 정보 또는 처리된 정보를 기억시킬 곳을 나타내는 것으로 레지스터 번호나 메모리 주소를 나타내게 되는데, 메모리의 주소인 경우는 메모리 용량과 관계가 있다어드레스 필드가 N비트로 구성되어 있다고 할 때, 메모리 용량은 2N
명렁어 세트의 효율성을 높이기 위한 고려사항
기억 공간, 사용 빈도, 함수 연산 기능 대 기타 연산 기능의 비율, 주기억 장치의 밴드폭 이용, 주소 지정 방식명렁어 설계의 고려사항
어떤 종류의 연산자를 사용할 것인가?(연산자의 수 및 종류)
자료는 어떻게 지정할 것인가?(주소 지정 방식)
어떤 방식으로 연산자와 자료를 구조화할 것인가?(데이터 구조, Word 크기)
연산자의 기능
-
함수 연산 기능(Functional)
산술적 연산과 논리적 연산을 수행하는 기능 -
전달 기능(Transfer)
버스 라인을 통해 레지스터 사이의 정보 이동 및 CPU와 주기억 장치의 정보를 이동시키는 기능 -
제어 기능(Control)
제어 장치에 의해 명령어를 해독하여 명령어의 수행 순서를 제어하거나 연산 장치의 제어점 제어 기능 -
입출력 기능(I/O)
주기억 장치에 기억된 연산 결과를 출력 장치로 이동시키거나 입력 장치에 있는 데이터를 주기억 장치로 이동시키는 기능
명령어의 종류
데이터 처리 명령어
- 산술 연산
- ADD
- SUB
- MUL
- DIV
- INC : 1 증가시키는 명령
- DEC : 1 감소시키는 명령
- 논리 연산
- AND : 특정 문자
삭제
시 사용 - OR : 특정 문자
삽입
시 사용 - XOR :
비교
,반전
시 사용 - COMPLEMENT : 1의 보수를 구할 때 사용
- CLEAR : 모든 내용을 0으로
리셋
할 때 사용
- AND : 특정 문자
- 시프트 연산
- 산술 Shift : 2로 곱하거나 나누기를 하기 위한 오른쪽이나 왼쪽으로의 이동 명령
- 논리 Shift : 자료를 오른쪽이나 왼쪽으로 이동시키기 위한 명령
- Rotate : 문자의 위치 변환을 위한 이동 명령(ROL, ROR)
데이터 전송 명령어
- LOAD : 메모리로부터 CPU의 레지스터로 자료를 가져오는 명령
- STORE : CPU의 레지스터에 있는 자료를 메모리에 기억시키는 명령
- MOVE : 레지스터에서 레지스터로 데이터를 전달하는 명령
- PUSH, POP : 스택에 데이터를 입출력하는 명령
- INPUT : 입력 장치에 있는 데이터를 메모리로 전달
- OUTPUT : 메모리에 있는 데이터를 출력 장치로 전달
데이터 제어 명령어
모든 명령어들이 상황에 맞게 적절히 수행될 수 있도록 조작을 가하는 명령어
- JUMP : 원하는 곳으로 무조건 분기
- SKIP : 다음 명령어를 건너뛰고 수행
- SMA : ACC가 0보다 작을 때 SKIP
- SZA : ACC가 0과 같을 때 SKIP
- SZC : C가 0과 같을 때 SKIP
- ISZ : 1 증가하여 0과 같으면 SKIP
- RETI : 인터럽트로부터 복귀
- CALL : 서브 프로그램의 호출
- RETURN : 서브 프로그램에서 메인 프로그램으로 복귀
- HALT : 컴퓨터의 동작을 일시적으로 정지
기타 명령
-
리커션(Recursion)
자기가 자신을 호출하는 경우로 되돌아올 복귀 주소를 스택에 PUSH하고 다시 자신을 실행한다. 잘못하면 무한 루프에 빠질 수 있다 -
반복(Iteration)
주어진 자료를 가지고 처음에 실시된 계산은 정확한 정보를 나타내 주지 못하므로 그 결과를 가지고 처음의 자료를 다시 수정하여 계산하는 방법을 반복적으로 행하는 것으로 루틴 내부에서 자료를 얻어야 한다 -
매크로(Macro)
반복되는 일련의 루틴을 별도로 작성해 놓은 측면에서 부 프로그램과 유사하다. 자주 사용하는 여러 개의 명령어를 묶어서 하나의 명령어로 만든 것이나 컴파일 시는 원래의 명령어로 대치되기 때문에 인수의 형은 신경쓸 필요가 없다 -
부 프로그램(Sub Program)
CALL 문으로 호출해 사용하는 반면 매크로의 경우는 본문 자체에 삽입되어 사용
기타 프로그램
-
연계 편집기(Linkage Editor)
목적프로그램을 실행 가능한 로드 모듈로 변환하는 시스템 서비스 프로그램 -
기계어
컴퓨터가 직접 이해하고 수행할 수 있는 언어로 수행 시간이 신속하나 프로그램 과정이 불편하고 언어의 호환성이 없다는 단점을 가지고 있다 -
고급 언어
기계어와는 달리 프로그래머가 익숙한 표현 형식을 사용하도록 하는 프로그래밍 언어로 하드웨어에 상관없이 컴파일러로 분역되어 하드웨어와 호환되도록 한 언어 -
번역 프로그램 포스트 이동하기
디버깅(Debugging)
트레이서나 덤프등을 이용하여 프로그램의 오류를 발견하고 그 원인을 밝히는 작업을 의미
트레이서(Tracer) : 프로그램의 실행 과정을 출력하는 프로그램
덤프(Dump) : 주기억장치의 내용을 그대로 화면이나 프린터 등에 출력
명령어의 형식
피연산자(Operand Address) 개수에 따른 구분
- 0-주소 명령어 형식
- 오퍼레이션 부분
만
있고 오퍼랜드 부분인 주소가 없는 명령어 형식을 의미 - 스택(
Stack
) 구조 컴퓨터에서 사용하는 명령어 형식 - 모든 연산은 스택상에 있는 두 값을 묵시적으로 지정하여
POP
해서 연산을 수행하고 결과를 다시 스택상에PUSH
하기 때문에 원래의 데이터는 모두 잃어버리게 된다
- 오퍼레이션 부분
- 1-주소 명령어 형식
- 오퍼레이션 부분과
1
개의 오퍼랜드 부분으로 구성된 명령어 형식을 의미 - 누산기(
ACCumulator
) 구조 컴퓨터에서 사용하는 명령어 형식 - 연산 시 두 개의 자료 중 하나는 묵시적으로 누산기를 지정하여 연산하고, 연산 결과 역시 누산기에 저장하는 방식
- 오퍼레이션 부분과
- 2-주소 명령어 형식
- 오퍼레이션 부분과
2
개의 오퍼랜드 부분으로 구성된 명령어 형식을 의미 - 연산 시 두 개의 자료는 오퍼랜드가 지정한 2개의 자료를 대상으로 연산하고, 연산 결과는 주로
Operand-1
에 저장 - 연산 후 결과가 Operand-1에 저장되므로 Operand-1의 위치에 있던 내용은 잃어버리게 된다
- 계산 결과를 시험할 필요가 있을 때 계산 결과가 기억 장치에 기억될 뿐 아니라 중앙 처리 장치에도 남아 있어서 중앙 처리 장치 내에서 직접 시험이 가능
- 오퍼레이션 부분과
- 3-주소 명령어 형식
- 오퍼레이션 부분과
3
개의 오퍼랜드 부분으로 구성된 명령어의 형식을 의미 - 연산 시 두 개의 자료는 Operand-1과 Operand-2에서 지정된 2개의 자료를 대상으로 연산하고, 연산 결과는
Operand-3
에 저장 - 연산 후 결과는 Operand-3 또는 Operand-1에 저장되므로 원래의 내용은 모두 보존할 수 있다
- 명령어의 길이가 길다
- 오퍼레이션 부분과
피연산자 위치에 따른 구분
연산 대상이 되는 자료를 어디에 보관하는가에 따라 분류하는 방법
- 스택 명령어(SI, Stack Instruction)
- 연산 대상이 되는 자료가 스택에 있고, 결과 또한 스택에 저장되는 경우
- 0-주소 명령어 형식
- 누산기 명령어(AI, Accumulator Instruction)
- 연산 대상이 되는 자료의 일부 도는 전부가 누산기에 있고, 결과 또한 누산기에 저장되는 경우
- 1-주소 명령어 형식
- 레지스터-레지스터 명령어(RRI, Register-Register Instruction)
- 연산 대상이 되는 두 개의 자료가 모두 레지스터에 있는 경우
- 수행 속도가 빠름
- 전체 명령어의 길이가 짧다
- 메모리-레지스터 명령어(MRI, Memory-Register Instruction)
- 연산 대상이 되는 두 개의 자료 중 하나는 주기억 장치에 있고 하나는 레지스터에 있는 경우
- 주기억 장치에 한 번 접근해야 하기 때문에 RRI에 비해 수행 속도가 느리다
- 메모리-메모리 명령어(MMI, Memory-Memory Instruction)
- 연산 대상이 되는 두 개의 자료가 모두 주기억 장치에 있는 경우
- 주기억 장치에 두 번 접근해야 하기 때문에 수행 속도가 느리다
명령어의 메모리 참조 방식
레지스터 참조 명령(RRI, Register Reference Instruction)
메모리 참조 명령(MRI, Memory Reference Instruction)
입출력 명령(IOI, Input/Output Instruction)
댓글남기기