컴파일 언어, 인터프리터 언어가 있다.
- 컴파일 언어 : 컴파일 언어로 작성된 소스 코드는 컴파일러를 통해 저급 언어로 변환되고, 이 과정을 컴파일 이라고 한다.
- 인터프리트 언어 : 인터프리터에 의해 한 줄씩 실행 -> 소스 코드 전체가 저급언어로 변환 되기까지 기다릴 필요가 없다
저급 언어
컴퓨터가 이해하고 실행하는 언어
기계어,어셈블리어가 있다
- 기계어 : 0과 1로 이루어진 명령어로 구성됨
- 어셈블리어 : 0과 1로 이루어진 기계어를 읽기 편한 상태로 번역한 저급 언어
명령어의 구조
더해라,빼라,저장해라 : 연산 코드(+필드)
연산에 사용될 데이터가 저장된 위치 : 오퍼랜드(+필드)
- 오퍼랜드는 연산에 사용도리 데이터를 저장하는 경우보다 연산에 사용될 데이터가 저장된 위치를 저장하는게 대부분이다!
- 이유 : 오퍼랜드 필드로 표현할 수 있는 데이터 크기가 2의16승 이라 데이터를 직접 넣는 것보다,데이터가 저장된 메모리 주소를 넣는것이 더 많은 정보를 표현할 수 있다.(데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커짐)
명령어 주소 지정 방식
즉시 주소 지정 방식
- 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시
- 가장 간단한 형태의 주소 지정 방식
- 연산에 사용할 데이터의 크기가 작아질 수 있지만,빠르다
직접 주소 지정 방식
- 오퍼랜드 필드에 유효 주소를 직접 명시하는 방법
- 유효 주소를 표현 할 수 있는 크기가 연산 코드만큼 줄어든다
간접 주소 지정 방식
- 오퍼랜드 필드에 유효 주소의 주소를 명시
- 앞선 주소 지정 방식들에 비해 속도가 느리다.(메모리를 많이 뒤적거림)
레지스터 주소 지정 방식
- 연산에 사용할 데이터가 저장된 레지스터 명시
- 메모리에 접근하는 속도보다 레지스터에 접근하는 것이 빠름!
레지스터 간접 주소 지정 방식
- 연산에 사용할 데이터를 메모리에 저장
- 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시
Tip:
cpu가 메모리를 뒤적거리는 속도는 매우 매우 느리다->메모리 접근을 최소화 하는것이 속도면에서는 중요하다.
cpu가 메모리에 접근하는 속도보다 메모리에 접근하는 속도가 더 빠르다
본 게시물은 한빛 미디어 <혼자 공부하는 컴퓨터구조+운영체제>를 읽고 공부한 것을 기록한 게시물입니다.