본문 바로가기

CS/컴퓨터 구조

[ 컴퓨터 구조 ] 명령어

[ 출처 ]

혼자 공부하는 컴퓨터 구조 + 운영체제 03강

https://www.youtube.com/watch?v=kFWP6sFKyp0

[ 고급 언어 → 저급 언어 ]

고급 언어

= 개발자가 이해하기 쉽게 만든 언어 ( 컴파일 언어, 인터프리터 언어 )

 

컴파일 언어

= 컴파일 언어로 작성된 소스 코드는 컴파일러로 인해 저급 언어로 변환 ( 컴파일 )

= 컴파일 결과로 저급 언어인 목적 코드 생성

= 소스 코드 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않음

 

인터프리터 언어

= 인터프리터에 의해 한 줄씩 실행 ( 인터프리트 )

= 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음

= 소스 코드 인터프리트 중 오류가 발생하면 오류 발생 전까지의 코드는 실행

 

저급 언어

= 컴퓨터가 이해하고 실행하는 언어 ( 기계어, 어셈블리어 )

 

기계어 = 0과 1로 이루어진 명령어로 구성된 저급 언어

 

어셈블리어 = 기계어를 읽기 편한 형태로 번역한 저급 언어

[ 명령어의 구조 ]

명령어

= 연산 코드 + 오퍼랜드 ( 0 ~ 3개 )

 

연산 코드 = 수행할 연산

오퍼랜드 = 연산에 사용할 데이터 or 연산에 사용할 데이터가 저장된 위치

 

연산 코드 종류

1. 데이터 전송

2. 산술/논리 연산

3. 제어 흐름 변경

4. 입출력 제어

 

오퍼랜드에 굳이 데이터가 저장된 위치를 쓰는 이유

= 명령어 내에서 표현할 데이터의 크기가 제한됨

= 명령어 내에서 (연산 코드+ 다른 오퍼랜드 수) 만큼 비트 사용 제한

= 데이터를 외부에 저장 → 정해진 비트를 오로지 데이터 저장에 사용 가능

 

명령어 주소 지정 방식

= 연산에 사용할 데이터가 저장된 위치 ( 유효 주소 ) 를 찾는 방법

 

즉시 주소 지정 방식

= 연산에 사용할 데이터를 오퍼랜드 필드에 직접 명시 ( 메모리 접근 X )

= 연산에 사용할 데이터의 크기가 작아지지만, 빠름

 

직접 주소 지정 방식

= 유효 주소를 오퍼랜드 필드에 직접 명시 ( 메모리 접근 O )

= 유효 주소를 표현할 수 있는 크기가 연산 코드만큼 작아짐

 

간접 주소 지정 방식

= 유효 주소의 주소를 오퍼랜드 필드에 명시 ( 메모리 접근 O )

= 유효 주소를 온전히 표현할 수 있지만, 느림

 

레지스터 주소 지정 방식

= 연산에 사용할 데이터가 저장된 레지스터 명시 ( 메모리 접근 X )

= 메모리에 접근하는 것보다 레지스터에 접근하는 것이 빠름

= 직접 주소 지정 방식보다 빠름

 

레지스터 간접 주소 지정 방식

= 연산에 사용할 데이터를 메모리에 저장 ( 메모리 접근 O )

= 그 주소를 저장한 레지스터를 오퍼랜드에 명시

= 간접 주소 지정 방식보다 빠름