Two Pass Assmebling

어셈블리 언어로 작성된 소스코드(원시 코드)를 기계어에 해당하는 목적 코드로 바꿔주는 작업을 Assembling 이라고 하며, 이를 수행하는 시스템 소프트웨어가 Assembler 이다.

기계어를 만드는 과정으로 사람들이 전통적으로 사용해오며 정형화시킨 방법이 있는데, 이를 Two Pass Assembling이라고 한다.


Two Pass Assmebler

어셈블리어로 작성된 원시 코드를 2번 훑으면서 어셈블 하기 때문에 Two-Pass 라는 이름이 붙었다.

첫번째 순회에서는 Symbol Table을 만들고, 두번째 순회에서는 심볼 테이블을 가지고 기계어로 일대일 대응되는 명령어를 조립한다.

  1. 주소를 지정하는 ORG 에 맞게 각 명령어들이 들어갈 주소가 지정된다.
  2. 명령어를 조립하기 위한 OP Code 와 Symbol 을 사람이 보기 편하게 나뉘어 작성되어 있기 때문에, OP Code Table 과 Symbol Table 을 구성한다.
  3. OP Code Table 에는 Load 와 같은 1XX 뿐만 아니라, 500, 501 등 모든 니모닉 명령 코드를 담는다.
  4. 1-Pass 과정에서 Symbol 부분을 위에서 아래로 훑으며 각 심볼들이 위치할 주소값을 테이블에 담는다.
  5. 2-Pass 과정에서는, 만들어진 OP Code Table 과 Symbol Table 을 통해 명령어를 기계어로 조립한다. 예를 들어 (LDA, i) 는 테이블을 참조했을 때 190 으로 변환되고, (SUBA, ZERO) 는 499 로, (IN, ) 은 500 으로 변환되는 것이다.


OP Code Table  Symbol Tableaddr
LDA1__ i90
STA2__ N91
ADDA3__ tmp92
SUBA4__ ONE98
COB500 ZERO99
IN501   
OUT502   
JMP6__