1. CPU 명령어의 구성 (Instruction Structure)
ㅇ CPU 명령어 = 명령코드 + 피연산자
- 명령코드 (Operation code, Op code)
. 명령어들은, 1 이상의 피연산자(오퍼랜드)를 갖거나, 갖지 않을 수 있음
. 종류 : STORE, LOAD, SHIFT, XOR, JUMP 등
- 피연산자 (Operand, 오퍼랜드)
. 데이터(리터럴) or 데이터 위치(메모리 내 주소, 어느 레지스터 인가? 등)
2. CPU 명령어의 종류 (연산 종류)
ㅇ 데이터 전송 : LOAD, STORE 등
- 레지스터와 레지스터 간, 레지스터와 메모리 간, 메모리와 메모리 간
ㅇ 연산 : ADD, AND, OR, XOR, SHIFT, ROTATE 등
- 논리 연산 : AND, OR, NOT, XOR
- 산술 연산 : ADD
. 뺄셈은, 덧셈과 부호반전(negation)의 조합으로써, ☞ 1의 보수,2의 보수 참조
. 곱셈은, 덧셈의 반복으로써,
. 나눗셈은, 뺄셈의 반복으로써, 구현 가능
- 회전,자리이동 연산 : SHIFT, ROTATE
ㅇ 제어 : BRANCH, JUMP, CALL 등
3. CPU 명령어의 주소 지정 방식
※ (프로세서가, 기억장치 접근을 위해 필요한, 계산 및 접근 횟수 등에 따라 달라짐)
- 피연산자(오퍼랜드)에 기억장치 내 위치(유효 주소)를 지정하는 방식
. (유효 주소 : 주소 지정방식에 의해 결정되는 오퍼랜드의 주소)
- 연산에 필요한 오퍼랜드의 주소를 알아내는데 사용되는 방식
ㅇ 구분 : (주소필드 저장 형태에 따른 구분)
- 직접 주소 지정 방식 (Direct or Absolute Addressing Mode)
. 주소필드에 오퍼랜드의 주소(=유효주소)를 직접 저장
. (장점) 기억장치 접근이 한번에 이루어짐
. (단점) 오퍼랜드 필드의 길이에 따라 접근할 수 있는 기억장치의 주소공간에 한계가 있음
- 간접 주소 지정 방식 (Indirect Addressing Mode)
. 주소필드에 유효주소가 저장되어 있는 기억장치 주소를 저장
. (장점) 접근할 수 있는 기억장치 주소공간이 중앙처리장치가 한 번에 접근할 수 있는 단어의
길이로 결정됨
. (단점) 두 번의 기억장치 접근이 필요
- 묵시적 주소지정 방식, 의미 주소 지정 방식 (Implied or Inherent Addressing Mode)
. 주소 필드가 필요없는 방식
. 묵시적 오퍼랜드 지정
. 例) 메모리 내 스택 사용 등
- 즉시/즉치 주소 지정 방식 (Immediate or Literal Addressing Mode)
. 주소필드에 실제 사용할 오퍼랜드(피연산자)를 지정
. 레지스터나 변수를 상수값으로 초기화하는데 유용
- 상대 주소 지정 방식 (Relative Addressing Mode)
. 유효주소를 계산하기 위해 특정 레지스터의 내용에 명령어 주소필드 값을 더하는 방식
. 특정 레지스터는, 주로 PC(Program counter)를 사용
. 유효주소 = 명령어 오퍼랜드 + PC
. (장점) 적은 비트수로 표현할 수 있기 때문에 간결한 명령어 구성 가능
. (특징) 분기주소가 명령어 단어와 가까운 위치에 있을 때 분기형 명령어에서 종종 사용
ㅇ 구분 : (유효 주소 계산 단계에 따른 구분)
- 0-단계 주소 지정 방식 : 유효 주소의 확정을 위해 별도의 계산이 필요 없음
. 즉치 주소 지정 방식 (Immediate Addressing Mode)
. 묵시 주소 지정 방식 (Implied Addressing Mode)
- 1-단계 주소 지정 방식 : 유효 주소의 확정을 위해 한 차례의 계산이 필요
. 직접 주소 지정 (Direct Addressing Mode)
. 레지스터 직접 주소 지정 (Register-Direct Addressing)
- 2-단계 주소 지정 방식 : 유효 주소의 확정을 위해 두 차례의 계산이 필요
. (즉, 두 번의 기억장치 접근이 필요)
. 간접 주소 지정 방식 (Indirect Addressing Mode)
. 레지스터 간접 주소 지정 (Register-Indirect Addressing Mode)
. 상대 주소 지정 방식 (Relative Addressing Mode)
. 변위 주소 지정 방식 (Displacement Addressing)
4. CPU 명령어의 기타 문법
ㅇ 줄 (line) : 고급 프로그래밍 언어와 달리, 한 줄에 하나의 명령어 만 씀
ㅇ 주석 (comment, ;) : 통상, 줄 끝에 붙이며, 줄이 끝나면 주석도 끝남
※ [참고] ☞ 어셈블리 언어 참조