-
바인딩
바인딩은 두가지 사물의 결합이다.
ex) 이름과 이름이 나타내는 대상
바인딩 시점이랑 바인딩이 생성되는 시점이거나 구현 결정이 일어나는 시점이다.
결정이 이루어지는 시점은 여러가지인데, 언어에 따라서 결정되는 것도 있고 실행환경에 따라 달라질 수 있다.- 언어 설계 시점
언어에 따라서 바인딩이 달라진다.
ex) 키워드, 함수 호출방법, 기본타임 등등…
c언어는 최소한의 것들을 정하고 컴파일러에서 알아서 구현하는 방식을 택했다.
자바에서는 환경의 차이를 없애기 위해서 가능한 상세히 정의를 한다.int는 몇바이인지 C언어는 환경에 맞추어 결정하고, 자바는 4바이트로 정해버리는 이러한 차이들이 있다.
- 언어 구현 시점
구현할 환경이 정해지고 컴파일러를 개발하면서 결정되는 사항들이다.
실행 환경과 컴파일러에 따라 달라진다.기본타입의 프리시젼
명령문 종류, 레지스터 사용방식
라이브럴리 환경
스택과 힙의 최대크기와 구조
예외처리, 언어 특정기능을 처리하는 방식- 컴파일 시점
컴파일러는 고급 구성요소(예를 들면 if, for문이나 함수 등)를 기계어 코드의
명령문과 주소에 대응시킨다. 또한 변수나 리터럴 값 등을 크기와 순서를 정하여 메모리에 배
치한다.- 링크 시점
대부분의 컴파일러는 프로그램의 각 모듈을 각각 컴파일하는 분리 컴파일을 지원
하고 또한 컴파일할 때 라이브러리의 표준 함수를 활용한다. 그러므로 프로그램은 링커에 의
해 여러 모듈이 결합되어 한 덩어리가 되기 전에는 완성되지 못한다.링커는 모듈의 전체적인 배치를 위해 모듈 간의 상대적인 위치를 결정한다. 모듈 간의 참조도 해결한다.
한 모듈의 이름이 다른 모듈의 객체를 참조할 때는 둘 간의 바인딩이 링크 시점까지는 최종적으로 결정되지 않는다.- 로드 시점
로드 시점은 운영체제가 실행을 위하여 프로그램을 HDD에서 메모리로 적재(load)하는 시점 이다.
초기 운영체제에서는 프로그램 내에서 객체의 기계 주소를 선택하는 것이 적재 시점까
지 최종 결정되지 않았다.최근 운영체제에서는 대부분 가상과 실제 주소를 구별한다.
가상 주소는 링크 시점에 정해진다.
물리적 주소는 실행 시에 바뀔 수 있다.
각 명령문을 실행할 때 프로세서의 메모리 관리 하드웨어가 가상 주소를 물리적 주소로 변환한다.- 실행 시점
실행 시점은 실행의 시작부터 끝까지의 상당히 길고 복잡한 기간을 모두 포함한다.
입력이나 계산, 지정문을 통해 변수에 값을 바인딩하는 것이 실행 시점에 이루어지는 가장 중요하고 기본적인 일이다.실행 시점은 프로그램의 시작 시간, 모듈에 들어가는 시간, 실현시간, 함수 호출 시간, 각 블록에 진입하는 시점, 그리고 각 문장의 실
행 시점 등을 모두 포함한다.728x90'프로그래밍언어론' 카테고리의 다른 글
상수에 대한 간단한 고찰 (0) 2023.03.22 메모리 영역 (2) 2023.03.20 컴파일러 구조(~후단부) (0) 2023.03.11 컴파일러의 구조(~ 전단부) (0) 2023.03.08 라이브러리와 링크, 그리고 적시컴파일 (0) 2023.03.06