[CS]

컴퓨터 구조 ch. 3 명령어

지기음 2022. 12. 29. 14:03

고급언어 : 사람을 위한 언어 / 일반적인 프로그래밍 언어

저급언어 : 컴퓨터가 이해하는 언어 어셈블리어와 기계어로 나누어진다. 

기계어 : 0과 1 

어셈블리어 : 저급언어 중 사람이 이해하기 쉽게 쓰여진 언어 한줄 한줄 해석해야됨 

 

고급언어를 어떻게 저급언어로 바꿀까?

1. 컴파일 방식 : 한 번에 (느림)

2. 인터프리터방식  : 한줄 한줄 (빠름)

-> 컴파일 방식과 인터프리터 방식은 한가지만 사용하는게 아님 실제로 자바는 컴파일 방식과 인터프리터 방식 둘 다 사용한다. 

 

목적 파일 : 목적 코드로 이루어진 파일 

목적 코드가 실행되기 위해서는 [링킹]이 필요 

 

명령어 

명령어 = 연산코드 + 오퍼랜드 

연산코드 : 명령어가 수행할 연산

오퍼랜드 : 연산코드가 실행할 데이터 or 데이터가 저장된 위치 

0주소 명령어 1주소명령어 2주소명령어 3주소명령어 등 다양 

0,1,2,3은 오퍼랜드의 개수 

오퍼랜드의 개수가 많아질 수록 오퍼랜드의 크기는 작아진다. 

 

주소지정 방식 

1. 즉시 주소 지정 방식 

  • 데이터의 크기가 작아지는 단점 
  • 다른 주소 지정 방식보다 빠름 

2. 직접 주소 지정 방식 

  • 오퍼랜드 필드의 길이가 연산 코드의 길이만큼 짧아져 표현할 수 있는 유효 주소에 제한이 생김 
  • 메모리를 한번 들림 (느리다는 말)

3. 간접 주소 지정 방식 

  • 유효주소의 주소를 오퍼랜드 필드의 명시 
  • 메모리를 두번 들림(매우 느림) 

3. 레지스터 주소 지정 방식

  • 레지스터를 오퍼랜드에 직접 명시 
  • 레지스터는 접근하는게 빠르기 때문 
  • 위와 동일하게 레지스터 크기에 제한 

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

  • 연산에 사용할 데이터를 메모리에 저장 / 유효주소를 레지스터에 저장 / 오퍼랜드에 레지스터 저장 
  • 메모리에 접근하는 횟수가 1번이므로 2번 메모리에 접근하는 간접 주소 지정 방식 보다 빠름