컴퓨터공학/시스템프로그래밍

시스템프로그램 11 - 1 단일 패스 어셈블러

Arkeiyou 2021. 11. 14. 18:50

용어체크

1. 전향 참조

전향 참조는 어떤 기호가 정의되지 않은 상태에서 기호를 사용하는 것을 의미한다. 예를 들어 … Move AX,FIVE … 처럼 FIVE라는 기호가 정의되지 않은 상태에서 기호를 사용하는 것을 의미한다. FIVE는 나중에 정의된다.

2. 단일 패스

단일 패스는 원시 프로그램을 한 번만 읽어서 처리하는 방법을 의미한다.

3. 이중 패스

이중 패스는 전향 참조를 해결하기 위해 원시 프로그램을 두 번 읽어서 처리하는 방법이다.

 

학습내용
  • 단일 패스 어셈블러 단순 전향참조 처리
  • 다수 전향참조 처리
학습목표
  • 단일 패스 어셈블러의 단순 전향참조 처리 방법을 설명할 수 있다.
  • 다수 전향참조 처리를 설명할 수 있다.

 

 

 

 

 


기호를 참조하는 방향에 따라서 기호 참조 방법은 어떤 것이 있을까요? 그리고 어셈블러에서 참조 방법에 따라 제기되는 문제점은 무엇이 있을까요?

기호를 참조하는 방향에 따라 참조 방법은 전향 참조와 후향 참조로 나눌 수 있습니다. 전향 참조는 말 그대로 기호를 미리 정의해 놓고 참조하는 것이고 후향 참조는 정의되지 않은 기호를 먼저 선언하고 후에 정의해 놓고 사용하는 방법을 의미합니다. 만약 어셈블러가 전향 참조 처리를 한다면 기호가 사용된 모든 주소를 기억한 기호표를 작성하여 사용하여야 합니다. 기억장치가 프로그램 전체를 동시에 적재할 수 있을 만큼 충분히 켜야만 실효성이 있는 방법입니다. 그래서 단일 패스가 아닌 이중 패스로 그 한계를 해결합니다.


Quiz 01단일 패스 어셈블러는 입력이 되는 원시 프로그램 전체를 주기억장치에 적재할 수 있어야 한다. 즉, 기억장치가 프로그램 전체를 동시에 적재할 수 있을 만큼 충분히 커야 실효성이 있는 패스 방법이다.
  • 1 O
  • 2 X
정답 :1
해설 :단일 패스는 원시 프로그램을 한번만 읽어서 처리하는 방법으로 주기억장치에 프로그램 전체를 동시에 적재해야 한다. 이 부분 때문에 처리에 있어서는 기억공간 낭비 및 실효성이 없다고 평가된다.
 
 
Quiz 02단일 패스 어셈블러의 경우 전향 참조를 위한 기호가 여러 개 있을 경우를 무엇이라 하는가?
  • 1 단순 전향 참조
  • 2 다수 전향 참조
  • 3 복합 전향 참조
  • 4 혼합 전향 참조
정답 :2
해설 :다수 전향 참조에 대한 설명이다.
 
 
Quiz 03다음은 전향 참조의 문제를 해결하는 방안에 대한 설명이다. 잘못 설명된 것은?
  • 1 이중 패스 어셈블러를 이용한다.
  • 2 전향 참조 때문에 값이 정의되지 않은 기호를 미확정 상태라는 것을 기록표에 기록한다.
  • 3 미확정된 상태의 기호가 정의될 때 찾아가서 값을 기록한다.
  • 4 기호가 어디에서 참조 되었는지 알기 위해 참조한 절대 주소를 기록한다.
정답 :4
해설 :기호가 어디에서 참조되었는지 알기 위해 참조한 상대 주소를 기록한다.

 


단일 패스 어셈블러 단순 전향참조 처리

  • 전향 참조란 어떤 기호가 정의되지 않은 상태에서 기호를 사용하는 것이다.
  • 전향 참조 문제를 해결하기 위해 이중 패스 어셈블러를 이용한다. 전향 참조 문제의 또 다른 해결 방안으로는 단일 패스를 통해 해결이 가능하며, 전향 참조 때문에 값이 정의되지 않은 기호는 미확정 상태로 놓아두고 기호가 정의될 때 그곳을 찾아가서 값을 기록하면 된다.
  • 어셈블러의 어셈블 방법으로 이중 패스는 전향 참조를 해결하기 위해 원시 프로그램을 두 번 읽어서 처리하는 방법이며, 단일 패스는 원시 프로그램을 한 번만 읽어서 처리하는 방법이다. 단일 패스의 단순한 전향 참조의 경우에는 전향 참조로 값이 정의되지 않은 기호에 대하여 우선, 미확정 상태로 놓아둔 다음 기호가 정의될 때 그곳을 찾아가서 값을 기록한다.

 

다수 전향참조 처리

  • 전향 참조가 여러 차례 나타나는 경우 기호가 나타났던 주소를 전부 기억하고 있다가 기호 값이 확정되면 전부 고쳐 주어야 한다. 이때 기호가 나타났던 모든 주소들을 어떻게 기억할 것인가의 문제점이 생기는데 해결 방법으로는 단순 연결 리스트 이용한다.
  • 전향 참조 다수 발생하는 것은 하나의 기호가 전향 참조로 여러 차례 발생하는 경우로 단일 패스로 처리한다. 기호가 사용된 모든 주소를 기억(기호표 작성)하고 기호의 값이 확정되면 기호표의 내용과 번역 프로그램의 상대 주소를 모두 변경해 주어야 한다. 이때 문제점은 기호가 중복되어 표현되므로 기억 공간을 많이 차지하게 된다. 기호표를 모두 탐색하고, 기호표가 저장되어 있는 주소와 번역된 프로그램이 저장되어 있는 주소 사이를 계속 왔다 갔다 해야 한다.
  • 단순 연결 리스트는 각 노드에 자료 공간과 한 개의 포인터 공간이 있고 각 노드의 포인터는 다음 노드를 가리키는 형태로 한계점으로는 단일 패스 어셈블러는 입력이 되는 원시 프로그램 전체를 주기억장치에 적재할 수 있어야만 한다.