P.144
1) 교과서 Chapter 2. Assemblers의 Exercises Section 2.1의 문제 2번(교과서 111쪽)과 문제 4번(교과서 112쪽)에 대한 해답 구하시오.
2. 다음 SIC 원시 프로그램에 대해 그림 2.4의 알고리즘을 이용하여 어셈블해 보아라.
2. Apply the algorithm described in Fig. 2.4 to assemble the following SIC source program.
SUM START 4000
FIRST LDX ZERO
LDA ZERO
LOOP ADD TABLE.X
TIX COUNT
JLT LOOP
STA TOTAL
RSUB
TABLE RESW 2000
COUNT RESW 1
ZERO WORD 0
TOTAL RESW 1
END FIRST
PASS 1 :
LCOUNT LABEL OPCODE OPRAND
4000 SUM START 4000
4000 FIRST LDX ZERO
4003 LDA ZERO
4006 LOOP ADD TABLE,X
4009 TIX COUNT
400C JLT LOOP
400F STA TOTAL
4012 RSUM
4015 RSUM
4015 TABLE RESW 2000
5785 COUNT RESW 1
5788 ZERO WORD 0
578B TOTAL RESW 1
578E END FIRST
PASS 2 :
SYMTAB
SYMBOL LOCATION
FIRST 4000
LOOP 4006
TABLE 4015
COUNT 5785
ZERO 5788
TOTAL 578B
INTERMEDIAT
SUM START 4000 004000
FIRST LDX ZERO 045788
LDA ZERO 005788
LOOP ADD TABLE,X 18C015
TIX COUNT 2C5785
JLT LOOP 384006
STA TOTAL 0C578B
RSUB 4C0000
TABLE RESW 2000
COUNT RESW 1
ZERO WORD 0 000000
TOTAL RESW 1
END FIRST
OBJECT PROGRAM
PROGRAM NAME STARTING ADDRESS PROGRAM LENGTH
H^SUM^^^004000 00178E
T004000 OC 045788 005788 18C015 2C5785
T00400C 384006 0C5785 4C0000 000000
E004000
PROG LENGTH = 578E - 4000 = 178E
4. 여러분이 역 어셈블러를 작성한다고 가정하자. 즉, 입력으로 목적 프로그램을 받고, 프로그램의 원시 버전의 리스트를 만드는 시스템 프로그램이다. 어떤 테이블과 자료 구조가 필요하며, 어떻게 사용되는가? 얼마나 많은 패스가 필요한가? 원시프로그램을 다시 생성하는 과정에서 발생하는 문제는 무엇이 있는가?
4. Suppose that you are to write a "disassembler" -that is, a system program that takes an ordinary object program as input and pro-duces a listing of the source version of the program. What tables and data structures would required, and how would they be used? How many passes would be needed? What problems would arise in recreating the source program?
Object code
H^SUM^^^004000 00178E
START ADDRESS PROGRAM LENGTH
T004000 OC 045788 005788 18C015 2C5785
LDXZERO LDAZERO ADD4015 TIXCOUNT
T00400C OC 384006 0C058B 4C0000 000000
JLTLOOP STATOTAL RSUB0000
E004000
SYMTAB
SYMBOL LOCATION
FIRST 4000
LOOP 4006
TABLE 4015
COUNT 5785
ZERO 5788
TOTAL 578B
위에 Object code를 읽어내기 위해서는 먼저 SYMTAB와 INTERMEDIAT가 필수적으로 필요하다.
SYMTAB는 SYMBOL과 LOCATION을 저장해두기 위해서 이고
INTERMEDIAT는 Program 실행 순서를 기억해두기 위해서 필요하다.
이를 저장해둘 때 자료 구조는 SYMTAB는 리스트를 이용해 구현하여서, 원하는 SYMBOL을 찾을 수 있도록 하여야하고, INTERMEMIAT는 큐를 이용하여서 먼저 들어온 코드가 가장 먼저 나갈 수 있게 만들어야 하기 때문이다.
PASS1에서는 Object code를 읽어내어서 원시버전의 리스트로 변환 하기위해서 필요하며,
PASS2는 변환된 원시버전의 리스트를 읽어내기 위해서 필요하다.
그리고 이 원시프로그램을 Object code만을 읽어서 생성하는 과정에서는 SYMTAB가 따로 주어지지 않는 이상 기존의 저장된 SYMTAB를 읽어낼 수 없는 문제가 발생한다.
그리고 INTERMEDIAT에 추가로 함께 저장되는 변수들의 저장 값 또한 따로 지정해 주지 않는 이상 컴퓨터에서 임의적으로 설정을 할 수 없게되는 문제가 발생하게 된다.
2) 교과서 Chapter 2. Assemblers의 Exercises Section 2.2의 문제 3번과 문제 4번(교과서 114쪽)에 대한 해답 구하시오.
3. 다음 SIC/XE 프로그램에서 각 문장에 대한 목적 코드를 생성하시오.
3. Generate the object code for each statement in the following SIX/XE program.
SUM START 0
FIRST LDX #0
LDA #0
+LDB #TABLE2
BASE TABLE2
LOOP ADD TABLE,X
ADD TABLE2,X
TIX COUNT
JLT LOOP
+STA TOTAL
RSUB
COUNT RESW 1
TABLE RESW 2000
TABLE2 RESW 2000
TOTAL RESW 1
END FIRST
LCOUNT 원시문 Object Code
0000 SUM START 0
0000 FIRST LDX #0 050000
0003 LDA #0 010000
0006 +LDB #TABLE2 69101790
BASE TABLE2
000A LOOP ADD TABLE,X 1BA013
000D ADD TABLE2,X 1BC000
0010 TIX COUNT 2F200A
0013 JLT LOOP 3B2FF4
0016 +STA TOTAL 0F102F00
001A RSUB 4F0000
001D COUNT RESW 1
0020 TABLE RESW 2000
1790 TABLE2RESW 2000
2F00 TOTAL RESW 1
END FIRST
4. 연습문제 3에서 원시 프로그램에 대한 완전한 목적 프로그램을 생성하시오.
4. Generate the complete object program for the source program given in Exercise 3.
H^SUM^^^050000
T 050000 OC 010000 69101790 IBA013 IBC000 2F200A 0F102F00 4F0000
E 050000
'Department > System software' 카테고리의 다른 글
시스템 소프트웨어 과제#7 (0) | 2020.07.14 |
---|---|
시스템 소프트웨어 과제#6 (0) | 2020.07.14 |
시스템 소프트웨어 과제#5 (0) | 2020.07.14 |
시스템 소프트웨어 과제#4 (0) | 2020.07.14 |
시스템 소프트웨어 과제#2 (0) | 2020.07.14 |