이론/컴퓨터구조
컴파일러, 인터프리터, 컴퓨터구조
ohojee
2023. 10. 12. 18:48
컴파일러와 인터프리터
고급언어를 기계어로 변환하는 소프트웨어
- 컴파일러
- 인터프리터
- 어셈블러
컴파일러
- 고급 언어로 작성된 소스 프로그램 → 기계어 실행 프로그램으로 변환하는 소프트웨어
- 컴파일 과정에서 전체 소스 프로그램 분석 → 기계어 실행 프로그램 파일로 변환 → 변환된 프로그램 파일은 OS에 의해 메모리에 로딩 → CPU에 의해 실행
- ex) C, C++, Pascal 등
- 특징
- 전체 소스 프로그램을 분석 ⇒ 컴파일 과정에서 많은 시간 소요 but, 프로그램 최적화 가능
- 기계어 실행 파일을 CPU가 실행 ⇒ (인터프리터 방식에 비해) 실행 속도 빠름
- 실행과정

- 링커: 호출하는 관계들을 연결
실행 → 메모리 할당 → 메모리에 로딩 → hw가 실행
실행파일은 0번지부터 시작, but 로딩은 0번지부터 되지 않음 ⇒ 주소 바꿔줘야함(relocation)
인터프리터
- 고급 언어로 작성된 프로그램을 명령어 단위로 해석하여 바로 실행하는 소프트웨어
- 인터프리터가 소스 프로그램의 명령어 단위로 해석 및 실행을 반복
- 기계어 실행 파일을 만들지 x
- ex) Basic, Python, JavaScript 등
- 특징
- 명령어 단위로 변환 ⇒ (컴파일러 방식에 비해) 변환 시간 짧음
- 소프트웨어에 의해 실행 ⇒ 실행 속도가 느림
- 실행 파일 만들어지지 x, 프로그램 실행 시마다 다시 해석 필요
어셈블러
- 어셈블리어로 작성된 프로그램을 기계어 프로그램으로 변환하는 소프트웨어
- 어셈블리어? 기계어 코드에 1:1로 대응되는 심볼로 표현한 언어(사실상 기계어) 메모리 상에 숫자로 되어있는 언어를 이해하기 쉽도록 바꾼 것 ⇒ 어셈블리어 프로그래밍? 기계어 프로그램을 작성한다는 것
- 어셈블리어 사용하는 경우
- 속도와 크기가 매우 중요한 프로그램
- 고급언어 프로그램에서 속도가 매우 중요한 부분의 프로그래밍
- 오래된 컴퓨터 혹은 특수 목적의 컴퓨터
- 동작 모드 변경 등 CPU를 직접 제어해야 할 때
컴퓨터 구조, 구성
컴퓨터 구조
(= 명령어 집합 구조(ISA), CPU 아키텍쳐)
- 하드웨어와 소프트웨어 사이에서 인터페이스 역할을 하는 명령어 집합 구조
- 프로그래머에게 보이는 시스템의 속성을 의미
- ex) 명령어 집합, 데이터 표현에 사용되는 비트 수, 레지스터의 개수나 형식, 메모리 주소 지정 방식 등
컴퓨터 구성
(= 컴퓨터 구현)
- 컴퓨터 구조에 대한 형체를 제공하는 논리적인 골격
- CPU와 각종 구성 요소, 관련 회로의 인터페이스에 대한 세부 구현 방법
- 동일한 컴퓨터 구조에 대해 다양한 컴퓨터 구성이 가능
- 프로그래머에게 투명한(보여지지 않는) 하드웨어 내역을 의미
⇒ 어떻게 구현되던 상관 x
- ex) 직렬 덧셈장치 or 병렬 덧셈장치, 고정결선식 제어장치 or 마이크로 프로그래밍식 제어장치, 파이프라이닝 방식, 캐시 메모리 구성 등
컴퓨터 계열
❓
동일한 컴퓨터 구조 & 다른 컴퓨터 구성(cpu 등) ⇒ 같은 컴퓨터 계열?
- 동일한 컴퓨터 구조를 사용하지만 다른 방식으로 구현한 컴퓨터의 집합
- ex) 인텔 아톰, 펜티엄, 셀러론, i3, i5, i7, i9
- 컴퓨터 계열은 소프트웨어의 호환성 개념 제공 ⇒ 동일한 컴퓨터 구조를 사용하기 때문에 같은 소프트웨어 사용 가능(호환성)
하드웨어, 소프트웨어 상호조정

- 컴퓨터 시스템의 모든 기능은 하드웨어 또는 소프트웨어로 구현 가능
- 기능에 따라 어떤게 hw로 구현되었는지, 어떤게 sw로 구현되었는지 구분 불가
- 하드웨어와 소프트웨어의 상호 조정 관계
- hw는 성능, sw는 융통성 면에서 장점
Uploaded by N2T