1. 고급언어/저급언어, 기계어, 어셈블리어, 컴파일 언어, 인터프리터 언어
- High-Level Language; 고급언어: 사람을 위한 언어(C, C++, Java...)
- Low-Level Language; 저급언어: 컴퓨터가 직접 이해하고 실행할 수 있는 언어(기계어, 어셈블리어...)
- 컴파일 언어: 컴파일 방식으로 작동하는 프로그래밍 언어
- 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어 (C언어가 대표적)
- 컴파일 언어로 작성된 소스 코드는 컴파일(코드 전체가 저급 언어로 변환되는 과정)을 컴파일러(컴파일을 수행해 주는 도구) 가 진행함
- 컴파일이 성공적으로 수행되면, 개발자가 작성한 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환된다. 이렇게 컴파일러를 통해 저급 언어로 변환된 코드를 목적 코드(Object code)라고 함
- 인터프리트 언어: 인터프리트 방식으로 작동하는 언어
- 소스 코드를 한 줄씩 차례로 실행하며, 소스 코드를 한 줄씩 저급 언어로 변환하여 실행하는 도구인 인터프리터를 통해 작동한다. 대표적으로 Python이 있다.
- 컴파일 언어에 비해 저급언어로 변환되는 시간까지 기다릴 필요는 없지만, 한 줄씩 해석과 실행을 반복하기 때문에 컴파일 언어보다 느리다.
2. 명령어, 연산코드, 오퍼랜드, 주소 지정 방식
- 명령어는 기본적으로 연산 코드와 오퍼랜드로 구성되어 있다.
- 연산 코드(연산자): 명령어가 수행할 연산
- 연산 코드 필드: 연산 코드가 담기는 영역
- 연산코드 종류
- 데이터 전송: MOVE/STORE/LOAD(FETCH)/PUSH/POP
- 산술/논리 연산: ADD/SUBTRACT/MULTIPLY/DIVIDE/INCREMENT/DECREMENT/AND/OR/NOT/COMPARE
- 제어 흐름 변경: JUMP/CONDITIONAL JUMP/HALT/CALL/RETURN
- 입출력 제어: READ/WRITE/START IO/TEST IO
- 오퍼랜드(피연산자): 연산에 사용할 데이터가 저장된 위치, 주소필드라고 부름
- 오퍼랜드 필드: 오퍼랜드가 담기는 영역
- 연산 코드(연산자): 명령어가 수행할 연산
- 주소 지정 방식
- 오퍼랜드 부에 주소를 담는 이유는, 명령어 길이의 제한이 있기 때문이다.
- 연산의 대상이 되는 데이터가 저장된 위치를 유효 주소라고 한다.
- 즉시 주소 지정 방식
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
- 직접 주소 지정 방식
- 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
- 간접 주소 지정 방식
- 유효 주소의 주소를 오퍼랜드 필드에 명시하는 방식
- 레지스터 주소 지정 방식
- 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식
- 레지스터 간접 주소 방식
- 연산에 사용할 데이터를 메모리에 저장, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방식
- 즉시 주소 지정 방식
'Study > Computer Architecture' 카테고리의 다른 글
Memory Structure (0) | 2023.10.06 |
---|---|
Data (0) | 2023.09.29 |
Computer Structure (0) | 2023.09.28 |