728x90
고급 언어와 저급 언어
프로그램을 만들 때 사용하는 프로그래밍 언어는 컴퓨터가 이해하는 언어가 아닌 사람이 이해하고 작성하기 쉽게 만들어진 언어이다.
고급 언어
- 사람을 위한 언어
- 대부분의 프로그래밍 언어
저급 언어
- 컴퓨터가 직접 이해하고 실행할 수 있는 언어
- 명령어로 이루어져 있음
- 고급 언어로 작성된 소스 코드가 실행되기 위해서는 저급 언어(명령어)로 변환해줘야함
저급언어의 종류
- 기계어
- 0과 1로 이루어진 언어
- 어셈블리어
- 0과 1로 이루어진 명령을 읽기 편한 상태로 번역한 언어
- 어셈블리어 한 줄 한 줄이 명령어임
- 하드웨어와 밀접하게 맞닿아 있는 임베디드 개발자, 게임 개발자, 정보 보안 분야 등의 개발자는 어셈블리어를 많이 이용함
컴파일 언어, 인터프리터 언어
고급언어가 저급언어로 변환되는 방법
컴파일 언어
- 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고습 언어
- 컴파일: 컴파일 언어로 장석된 소스 코드가 저급 언어로 변환되는 과정
- 컴파일러: 컴파일을 수행해 주는 도구
- 목적 코드: 컴파일러는 통해 저급 언어로 변환된 코드
인터프리터 언어
- 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어
- 소스 코드 전체가 저급 언어로 변하는 컴파일 언어와는 달리, 인터프리터 언어는 소스 코드를 한줄 한줄씩 차례로 실행함
- 인터프리터: 소스 코드 한 줄씩 저급 언어로 변환하여 실행해 주는 도구
컴파일 언어가 인터프리터 언어보다 빠름
현대의 많은 프로그래밍 언어는 컴파일 언어와 인터프리터 언어 간의 경계가 모호한 경우가 많음
목적 파일
- 목적 코드로 이루어진 파일
- 목적 코드가 실행 파일이 되기 위해서는 링킹이라는 작업을 거쳐야 함
명령어의 구조
- '무엇을 대산으로, 어떤 작동을 수행하라' 는 구조어 되어있음
- 명령어는 연산 코드와 오퍼랜드로 구성되어 있음
- 연산 코드(연산자): 명령어가 수행할 연산
- 오퍼랜드(피연산자): 연산에 사용할 데이터, 연산에 사용할 데이터가 저장된 위치
오퍼랜드
- 연산에 사용할 데이터, 연산에 사용할 데이터가 저장된 위치를 의미함
- 숫자와 문자 등을 나타내는 데이터 또는 메모리나 레지스터 주소가 올 수 있음
- 대부분의 경우 메모리 주소나 레지스터 이름이 담김
- 그렇기 때문에 오퍼랜드 필드 = 주소 필드 라고도 불림
- 오퍼랜드 명령어 안에는 0개부터 여러 개의 값이 들어갈 수 있음
- 오퍼랜드가 없으면 0-주소 명령어, 오퍼랜드가 하나면 1-주소 명령어, 두개면 2-주소 명령어라고 부름
연산 코드
- 명령어가 수행할 연산
- 크게 데이터 전송, 산술 논리 연산, 제어 흐름 변경, 입출력 제어로 나뉨
주소지정 방식
- 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법
오퍼랜드 필드에 메모리나 레지스터 주소를 담지 않고 데이터로 명령어를 구성하면 안되는가?
> 명령어의 길이 때문에 안됨
- 하나의 명령어가 n비트로 구성되어 있고 연산 코드 필드가 m비트라고 할 때,
- 오퍼랜드 필드의 길이는 n-m비트로 오퍼랜드 필드가 많아질 수록 비트수는 적어짐
즉시 주소 지정 방식
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
- 이러한 방식을 사용하면 위에 적혀있듯 데이터의 크기가 작아진다는 단점이 있지만 빠름
직접 주소 지정 방식
- 오퍼랜드 필드에 유효 주소를 직접적으로 명시하는 방식
- 표현할 수 있는 데이터의 크기는 위의 방식보다 더 커지지만, 오퍼랜드 필드의 길이가 연산 코드의 길이만큼 짧아져 표현할 수 있는 유효 주소에 제한이 생길 수 있음
간접 주소 지정 방식
- 유효 주소의 주소를 오퍼 랜드 필드에 명시함
- 직접 주소 지정 방식보다 표현할 수 있는 유효 주소의 범위가 더 넓어짐
- 다만 두 번의 메모리 접근이 필요하기 때문에 느림
레지스터 주소 지정 방식
- 직접 주소 지정 방식과 비슷하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법
- 일반적으로 CPU 외부에 있는 메모리에 접근하는 것 보다 CPU 내부의 레지스터에 접근하는 것이 빠름
- 레지스터 크기에 제한이 생길 수 있음
레지스터 간접 주소 지정 방식
- 연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법
- 간접 주소 지정 방식보다 빠름
정리
주소 지정 방식: 연산에 사용될 데이터를 찾는 방법
유효 주소: 연산에 사용될 데이터가 저장된 위치
즉시 주소 지정 방식: 연산에 사용할 데이터
직접 주소 지정 방식: 유효 주소(메모리 주소)
간접 주소 지정 방식: 유효 주소의 주소
레지스터 주소 지정 방식: 유효 주소(레지스터 주소)
레지스터 간접 주소 지정 방식: 유효 주소를 저장한 레지스터
728x90
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 레지스터 (0) | 2022.11.22 |
---|---|
[컴퓨터구조] CPU, ALU와 제어장치 (1) | 2022.11.22 |
[컴퓨터구조] 컴퓨터 정보 단위 (1) | 2022.11.21 |
[컴퓨터구조] 컴퓨터 핵심 부품 (0) | 2022.11.21 |
[컴퓨터구조] 램, CPU (0) | 2022.11.17 |