Search

명령어

Last update: @1/7/2023
혼자 공부하는 컴퓨터구조 + 운영체제

컴퓨터 구조

01 컴퓨터 구조 시작하기

02 데이터

03 명령어

04 CPU의 작동 원리

05 CPU 성능 향상 기법

06 메모리와 캐시 메모리

07 보조기억장치

08 입출력장치

명령어

프로그래밍 언어(소스 코드)는 해석되어 명령어로 번역됨
종류
고급 언어(high-level programming language) : 사람을 위한 언어
종류
컴파일 언어(ex> C) : 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 - 실행 전부터 오류 검출 가능(컴파일 언어)
인터프리터 언어(ex> Python) : 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어 - 오류 지점 전까지는 정상 실행됨
대부분의 언어는 컴파일 방식과 인터프리터 방식 둘 다 가능함
저급 언어(low-level programming language) : 컴퓨터가 직접 이해하고 실행할 수 있는 언어
종류
어셈블리어
기계어
목적 파일과 실행파일
목적 파일 : 컴파일러를 통해 저급 언어로 변환된 코드인 목적 코드로 이루어진 파일
실행 파일 : 실행코드로 이루어진 파일. 목적 파일들이 링킹 작업을 통해 연결되어 실행가능해진 코드
명령어의 구조 : 명령어는 연산코드 + 오퍼랜드로 구성됨
연산 코드(operation code = operator = 연산자) 연산 코드 필드: 연산 코드가 담기는 영역
기본적인 유형
데이터 전송
MOVE : 데이터를 옮겨라
STORE : 메모리에 저장하라
LOAD(FETCH) : 메모리에서 CPU로 데이터를 가져와라
PUSH : 스택에 데이터를 저장하라
POP : 스택의 최상단 데이터를 가져와라
산술/논리 연산
ADD / SUBTRACT / MULTIPLY / DIVIDE : 덧셈 / 뺄셈 / 곱셈 / 나눗셈을 수행하라
INCREMENT / DECREMENT : 오퍼랜드에 1을 더하라 / 빼라
AND / OR / NOT : AND / OR / NOT 연산을 수행하라
COMPARE : 두 개의 숫자 또는 TRUE / FALSE 값을 비교하라
제어 흐름 변경
JUMP : 특정 주소로 실행 순서를 옮겨라
CONDITIONAL JUMP : 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라
HALT : 프로그램의 실행을 멈춰라
입출력 제어
READ(INPUT) : 특정 입출력 장치로부터 데이터를 읽어라
WRITE(OUTPUT) : 특정 입출력 장치로 데이터를 써라
START IO : 입출력 장치를 시작하라
TEST IO : 입출력 장치의 상태를 확인하라
오퍼랜드(operand = 피연산자)
오퍼랜드 필드: 오퍼랜드가 담기는 영역 = 주소 필드
오퍼랜드 개수에 따른 명령어 종류
0-주소 명령어 : 오퍼랜드가 하나도 없는 명령어
1-주소 명령어 : 오퍼랜드가 하나인 명령어
2-주소 명령어 : 오퍼랜드가 두개인 명령어
3-주소 명령어 : 오퍼랜드가 세개인 명령어
주소 지정 방식 : 오퍼랜드 필드에 데이터가 저장된 위치(유효주소)를 명시할 때 연산에 사용할 데이터 위치를 찾는 방식
즉시 주소 지정 방식(immediate addressing mode) : 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
직접 주소 지정 방식(direct addressing mode) : 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
간접 주소 지정 방식(indirect addressing mode) : 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식
레지스터 주소 지정 방식(register addressing mode) : 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식
레지스터 간접 주소 지정 방식(register indirect addressing mode) : 연산에 사용할 데이터를 메모리에 저장하고, 그 주소(유효 주소)를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식
스택 주소 지정 방식(stack addresing mode) : 스택 포인터라는 레지스터를 이용한 주소 지정 방식
변위 주소 지정 방식(displacement addressing mode) : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식. 이 방식을 사용하는 명령어는 연산 코드 필드, 레지스터 필드, 오퍼랜드 필드가 있음
상대 주소 지정 방식(relative addressing mode) : 오퍼랜드와 프로그램 카운터의 값을 더하여 유효 주소를 얻는 방식. 즉 프로그램 카운터의 주소를 기준으로 오퍼랜드를 offset으로 하여 주소를 얻음
베이스 레지스터 주소 지정 방식(base-register addresing mode) : 오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식. 즉 베이스 레지스터의 주소를 기준으로 오퍼랜드를 offset으로 하여 주소를 얻음