[혼자 공부하는 컴퓨터 구조] 소스 코드와 명령어

재오·2023년 7월 22일
16

CS

목록 보기
31/35
post-thumbnail

컴파일 언어와 인터프리터 언어

컴파일 언어

컴파일 언어는 컴파일러에 의해 소스 코드 전체가 저급 언어로 변환되어 실행되는 고급 언어이다. 컴파일 언어로 작성된 소스 코드는 코드 전체가 저급 언어로 변환되는 과정을 거치는데 이를 컴파일이라고 한다. 그리고 컴파일을 수행해 주는 도구를 컴파일러라고 한다.

컴파일이 성공적으로 수행되면 개발자가 작성한 소스 코드는 컴퓨터가 이해할 수 있는 저급 언어로 변환된다. 이렇게 저급 언어로 변환된 코드를 목적 코드라고 한다.

인터프리터 언어

인터프리터 언어는 인터프리터에 의해 소스 코드가 한 줄씩 실행되는 고급 언어이다. 소스 코드 내에 오류가 하나라도 있으면 컴파일이 불가능했던 컴파일 언어와는 달리, 인터프리터 언어는 소스 코드를 한 줄씩 실행하기 때문에 소스 코드 N번째 줄에 문법 오류가 있더라도 N-1번째 줄까지는 올바르게 수행한다.

명령어의 구조

연산 코드와 오퍼랜드

명령어는 연산 코드와 오퍼랜드로 구성되어 있다. 명령어가 수행할 연산을 연산 코드 라고 하고 연산에 사용할 데이터가 저장된 위치를 오퍼랜드 라고 한다. 연산코드는 연산자, 오퍼랜드는 피연산자라고도 부른다.

오퍼랜드
오퍼랜드는 연산에 사용할 데이터를 의미한다. 오퍼랜드 필드에는 숫자와 문자 등을 나타내는 데이터 또는 메모리나 레지스터가 올 수 있다. 다만 오퍼랜드 필드에는 연산에 사용할 데이터를 직접 명시하기보다는, 연산에 사용할 데이터가 저장된 위치, 즉 메모리 주소나 레지스터 이름이 담긴다. 그래서 오퍼랜드 필드를 주소 필드라고 부르기도 한다.

오퍼랜드는 명령어 안에 하나도 없을 수 있고, 여러 개가 있을 수도 있다. 오퍼랜드가 하나도 없는 명령어를 0-주소 명령어 라고 하고, 오퍼랜드가 하나인 명령어를 1-주소 명령어 라고 한다.

연산코드
연산 코드 종류는 매우 많지만, 가장 기본적인 연산 코드 유형은 크게 네 가지로 나눌 수 있다.

데이터 전송 | 산술/논리 연산 | 제어 흐름 변경 | 입출력 제어

주소 지정 방식

오퍼랜드 필드 안에 메모리 주소가 담긴다면 표현할 수 있는 데이터의 크기는 하나의 메모리 주소에 저장할 수 있는 공간만큼 커진다. 연산의 대상이 되는 데이터가 저장된 위치를 유효 주소라고 한다. 이렇게 오퍼랜드 필드에 데이터가 저장된 위치를 명시할 때 연산에 사용할 데이터 위치를 찾는 방법을 주소 지정 방식 이라고 한다.

주소 지정 방식에는 대표적으로 아래와 같이 5 종류가 있다.

즉시 주소 지정 방식
오퍼랜드 필드에 직접 데이터를 명시하는 방법이다. 이 방식은 표현할 수 있는 데이터의 크기가 작아지는 단점이 있지만, 빠르다는 장점이 있다.

직접 주소 지정 방식
오퍼랜드 필드에 유효 주소(데이터 저장 위치) 를 직접적으로 명시하는 방식이다.

간접 주소 지정 방식
유효 주소의 주소를 오퍼랜드 필드에 명시한다. 직접 주소 지정 방식보다 표현할 수 있는 유효 주소의 범위가 더 넓어졌지만 속도는 확연히 느리다.

레지스터 주소 지정 방식
직접 주고 지정 방식과 비슥하게 연산에 사용할 데이터를 저장한 레지스터를 오퍼랜드 필드에 직접 명시하는 방법이다. 일반적으로 CPU 외부에 있는 메모리에 접근하는 것보다 내부에 있는 레지스터 에 접근하는 것이 더 빠르다. 단점은 레지스터 크기에 제한이 생길 수 있다는 점이다.

레지스터 간접 주소 지정 방식
연산에 사용할 데이터를 메모리에 저장하고, 그 주소를 저장한 레지스터를 오퍼랜드 필드에 명시하는 방법이다. 간접 주소 지정 방식과 비슷하지만, 메모리에 접근하는 횟수가 한번으로 줄어든다는 차이에서 장점이 있다.

profile
블로그 이전했습니다

9개의 댓글

comment-user-thumbnail
2023년 7월 22일

공감하며 읽었습니다. 좋은 글 감사드립니다.

1개의 답글
comment-user-thumbnail
2023년 7월 25일

혼자 하지말고 같이해요!

1개의 답글
comment-user-thumbnail
2023년 7월 26일

저 외람된 질문이지만,
썸네일 사진 어뜨케 하신거죠?

1개의 답글
comment-user-thumbnail
2023년 7월 31일

잘보고 갑니다!

답글 달기
comment-user-thumbnail
2023년 7월 31일

포스팅 잘 읽었습니다. 감사합니다.

답글 달기
comment-user-thumbnail
2023년 8월 1일

퍼가요~

답글 달기