본문 바로가기

컴퓨터구조, 운영체제

명령어

728x90
반응형
SMALL

고급언어 - 대부분의 프로그래밍 언어

저급언어 - 컴퓨터가 직접 이해하고 실행할 수 있는 언어 ex) 어셈블리어(assembly language) xcode에서도 종종 레이어 문제있을 때 뜨곤함.

 

컴파일 언어 - 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 ( 컴파일 : 소스코드 전체가 저급 언어로 변환(목적 코드)되는 과정 )

인터프리터 언어 - 소스 코드가 한 줄씩 실행되는 고급 언어 ex) Python ( 인터프리터 : 소스 코드를 한 줄씩 저급 언어로 변환하여 실행해 주는 도구 )

 

 

소스 코드 내에 오류가 하나라도 있으면 컴파일이 불가능한 컴파일 언어와는 달리, 인터프리터 언어는 소스 코드를 한 줄씩 실행하기 때문에 소스 코드 N번째 줄에 문법 오류가 있더라도 N-1번째 줄까지 올바르게 수행.

일반적으로 한 줄씩 해석하는 인터프리터 언어가 컴파일 언어보다 느림. 

 

목적 파일: 목적 코드로 이루어진 파일이며, 링킹(외부 파일과 외부기능을 연결하는 작업)을 통해 비로소 실행 파일이 될 수 있음.

 

명령어의 구조

명려어는 연산 코드와 오퍼랜드로 구성되어 있음

1. 연산 코드: 명령어가 수행할 연산

2. 오퍼랜드: 연산에 사용할 데이터가 저장된 위치

 

연산 코드 필드: 연산코드가 담기는 영역

오퍼랜드 필드(주소 필드): 오퍼랜드가 담기는 영역

1. 0-주소 명령어: 오퍼랜드가 하나도 없는 명령어

2. 1-주소 명령어: 오퍼랜드가 하나인 명령어

3. 2-주소 명령어: 오퍼랜드가 두 개인 명령어

4. 3- 주소 명령어: 오퍼랜드가 세 개인 명령어

연산 코드

  1. 데이터 전송

MOVE: 데이터를 옮겨라

STORE: 메모리에 저장하라

LOAD(FETCH): 메모리에서 CPU로 데이터를 가져와라ㅣ

PUSH: 스택에 데이터를 저장하라

POP: 스택의 최상단 데이터를 가져와라

  1. 산술/논리 연산

ADD / SUBSTRACT / MULTIPLY / DIVIDE: 덧셈 / 뺄셈/ 곱셈/ 나눗셈 수행
INCREMENT / DECREMENT: 오퍼랜드에 1을 더하라 / 오퍼랜드에 1을 빼라
AND / OR / NOT: AND / OR / NOT 연산을 수행하라
COMPARE: 두 개의 숫자 또는 TRUE / FALSE 값을 비교하라

  1. 제어 흐름 변경
    JUMP: 특정 주소로 실행 순서를 옮겨라
    CONDITIONAL JUNP: 조건에 부합할 때 특정 주소로 실행 순서를 옮겨라
    HALT: 프로그램의 실행을 멈춰라
    CALL: 되돌아올 주소를 저장한 채 특정 주소로 실행 순서를 옮겨라
    RETURN: CALL을 호출할 때 저장했던 주소로 돌아가라
  2. 입출력 제어
    READ(INPUT): 특정 입출력 장치로부터 데이터를 읽어라
    WRITE(OUTPUT): 특정 입출력 장치로 데이터를 써라
    START IO: 입출력 장치를 시작하라
    TEST IO: 입출력 장치의 상태를 확인하라

 

주소 지정 방식

유효 주소: 연산의 대상이 되는 데이터가 저장된 위치

즉시 주소 지정 방식: 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식

장점: 연산에 사용할 데이터를 메모리나 레지스터로부터 찾는 과정이 없기 때문에 이하 설명할 주소 지정 방식들보다 빠름

단점:  사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식으로 표현할 수 있는 데이터의 크기가 작아지는 단점

 

직접 주소 지정 방식: 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식

오퍼랜드 필드에서 표현할 수 있는 데이터의 크기는 즉시 주소 지정 방식보다 커졌지만, 여전히 유효 주소를 표현할 수 있는 범위가 연산 코드의 비트 수만큼 줄어들어 유효 주소에 제한이 생길 수 있음.

 

간접 주소 지정 방식: 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식

장점: 직접 주소 지정 방식보다 표현할 수 있는 유효 주소의 범위가 더 넒어짐

단점: 두 번의 메모리 접근이 필요하기 때문에 다른 주소 지정 방식들보다 일반적으로 느림

 

레지스터 주소 지정 방식: 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법

장점: CPU 외부 메모리에 접근하는 것보다 CPU 내부 레지스터에 접근하는 것이 더 빠르기 때문에 직접 지정 방식보다 빠르게 데이터 접근 가능

단점: 표현할 수 있는 레지스터 크기에 제한

 

레지스터 간접 주소 지정 방식: 연산에 사용할 데이터를 메모리에 저장하고, 그 주소(유효 주소)를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법

장점: 메모리에 접근하는 횟수가 한 번으로 간접 주소 지정 방식에 비해 비교적 빠름

 

 

728x90
반응형
LIST

'컴퓨터구조, 운영체제' 카테고리의 다른 글

메모리와 캐시메모리  (0) 2023.03.23
CPU 향상 기법  (0) 2023.03.23
CPU 작동 원리  (0) 2023.03.20
데이터  (0) 2023.03.12
컴퓨터 구조 시작하기  (1) 2023.03.11