본문/내용
I.서론
이중 패스 어셈블러는 어셈블리 언어로 작성된 코드를 기계어로 변환하는 과정에서 두 번의 패스를 수행하는 방법론을 사용한다. 이는 어셈블리 언어의 복잡한 구조와 다양한 지시어와 기호들을 효과적으로 처리하기 위해 고안된 기법으로, 특히 프로그램 내에서 주소 계산이나 심볼의 정의와 사용이 분산되어 있을 때 유용한다. 첫 번째 패스에서는 프로그램의 모든 심볼과 그 주소를 수집하고, 두 번째 패스에서는 이 정보를 바탕으로 기계어 코드로 변환을 실시한다. 이러한 이중 패스 구조는 어셈블리 프로그램이 메모리 주소를 정확하게 결정할 수 있도록 하며, 결과적으로 생성된 기계어가 정상적으로 실행될 수 있도록 보장한다. 첫 번째 패스에서는 소스 코드의 심볼 테이블을 생성하는 데 집중한다. 심볼 테이블은 프로그램에서 사용되는 모든 레이블, 변수 이름, 상수 등을 포함하며, 각 심볼에 해당하는 주소를 저장한다. 이 과정에서 어셈블러는 불완전한 주소를 처리할 수 있으며, 이때 나타나는 경우의 수와 상관없이 심볼이 처음 등장하는 지점의 주소를 기록하게 된다. 이렇게 수집된 정보는 두 번째 패스에서 메모리 주소로 변환되는 기계어 코드 …