컴퓨터는 0과 1만을 이해한다. 하지만 2진수로만 이용하여 컴퓨터에게 명령어를 실행시키면 사람이 사용하기 어렵다. 그렇기에 고급언어라는 것을 만들어서 컴퓨터에게 명령을 시킨다. 고급언어를 컴퓨터가 이해할 수 있는 저급언어로 변환한다.
컴퓨터가 이해할 수 있는 저급언어에는 단순히 0과 1로 만들어져 있는 기계어가 있으며 기계어를 사람이 조금 더 이해하기 쉽게 변환한 어셈블리어가 있다.
이러한 저급언어는 하드웨어와 밀접한 관계를 가진 개발자들이 사용하며 개발한다.
정리
고급언어 -> 저급언어 변환이 필요
고급언어 : 사람들이 이해하기 쉬운 언어
기계어 : 0과 1의 명령어 비트로 이루어진 언어
어셈블리어 : 0과 1로 표현된 기계어를 읽기 편한 형태로 변역한 언어
컴파일 방식, 인터프린터 방식
대표적인 컴파일 방식 사용 언어는 C언어가 있다. 컴파일러를 통해 모든 고급언어를 저급언어로 컴파일(변환)한다. 실행 중 문제가 발생하면 문제 발생 전 코드의 결과를 알려주지 않는다. 컴파일의 결과를 목적코드라고 한다.
대표적인 인터프린터 방식 언어는 파이썬이 있다. 인터프린터를 통해 고급언어의 한줄씩 실행하며 저급 언어로 변환한다. 그렇기에 실행 중 문제가 발생하면 그 전줄까지 실행 결과를 알려 준다.
C나 C++과 같이 명확하게 한가지 방식만 사용하는 언어가 있긴 하지만 대부분의 언어는 컴파일과 인터프린터 방식을 필요에 따라 사용한다.
목적파일, 실행파일
목적파일 : 목적코드로 이루어진 파일
실행파일 : 실행 코드로 이뤄진 파일
두 개의 파일을 컴파일했을 때 두개의 목적 파일이 생성되는데 다른 파일에 기능이 정의 되어 있으면 없는 기능을 연결 짓는 작업인 링킹을 거치면 실행 파일이 만들어진다.
명령어의 구조
연산 코드와 오퍼랜드
명령어 : 연산 코드와 오퍼랜드로 구성되어 있다.
연산 코드: 색 배경 필드 값, 즉 명령어가 수행할 연산
오퍼랜드 : 연산에 사용할 데이터, 연산에 사용할 데이터가 저장된 위치
연산 코드 필드 : 연산 코드가 담기는 영역
오퍼랜드 필드 : 오퍼랜드가 담기는 영역
오퍼랜드 필드에는 숫자나 문자등을 나나태는 데이터, 메모리, 레지스터 주소가 올 수 있다. 데이터를 직접 명시하기 보다 메모리나 레지스터 이름이 담긴다.
그래서 오퍼랜드 필드를 주소 필드라고도 한다.
오퍼랜드는 명령어 안에 없거나 1개부터 여러개가 있을 수 있다.
0-주소 명령어 : 오퍼랜드가 없는 명령어
1-주소 명령어 : 오퍼랜드가 1개인 명령어
2-주소 명령어 : 오퍼랜드가 2개인 명령어
3-주소 명령어 : 오퍼랜드가 3개인 명령어
연산 코드
연산코드는 크게 네 가지로 나눌 수 있다.
- 데이터 전송
- 산술/논리 연산
- 제어 흐름 변경
- 입출력 제어
주소 지정 방식
앞에서 데이터를 직접 명시를 안하고 메모리나 레지스터 주소를 담는 이유는 명령어의 길이 때문이다. 연산 코드의 길이는 항상 일정하지만 오퍼랜드는 0~3개의 명령어를 가지는 경우가 있다. 오퍼랜드를 많이 사용할 수록 다양한 정보를 넣기가 어려워 지기 때문에 메모리나 레지스터 주소를 담는 주소 지정 방식을 자주 사용한다.
유효 주소 : 연산 코드에 사용할 데이터가 저장된 위치
속도 : 오퍼랜드 > 레지스터 > 메모리
공간 : 오퍼랜드 < 레지스터 < 메모리
주소 지정 방식의 종류
즉시 주소 지정 방식
연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시하는 방식
메모리나 레지스터로부터 데이터를 찾는 과정이 없어 빠르다.
오퍼랜드(데이터)
직접 주소 지정 방식
오퍼랜드 필드에 유효주소를 직접적으로 명시하는 방식
유효주소 : 메모리
오퍼랜드 - 메모리(데이터)
간접 주소 지정 방식
유효주소의 주소를 오퍼랜드 필드에 명시
두 번 찾는 과정이 필요하기 때문에 일반적으로 느리다.
유효주소 : 메모리
오퍼랜드 - 메모리 - 메모리(데이터)
레지스터 주소 방식
연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방식
메모리에서 찾는것보다 빠르다.
유효 주소 : 레지스터
오퍼랜드 - 레지스터(데이터)
레지스터 간접 주소 지정 방식
연산에 사용할 데이터를 메모리에 저장하고 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
오퍼랜드에 데이터가 들어있는 메모리의 레지스터....(복잡하다.)
유효주소 : 메모리
오퍼랜드 - 레지스터 - 메모리(데이터)
참고) 혼자 공부하는 컴퓨터 구조+운영체제
'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글
6장 메모리와 캐시 메모리 (0) | 2023.03.23 |
---|---|
5장 CPU 성능 향상 기법 (0) | 2023.03.23 |
4장 CPU의 작동 원리 (0) | 2023.03.23 |
2장 데이터 (0) | 2023.03.16 |
1장 컴퓨터 구조 시작하기 (0) | 2023.03.13 |