본문 바로가기
Department/System software

시스템 소프트웨어 과제#3

by mean. 2020. 7. 14.
728x90
반응형

P.144

1) 교과서 Chapter 2. AssemblersExercises 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를 읽어내기 위해서는 먼저 SYMTABINTERMEDIAT가 필수적으로 필요하다.

SYMTABSYMBOLLOCATION을 저장해두기 위해서 이고

INTERMEDIATProgram 실행 순서를 기억해두기 위해서 필요하다.

이를 저장해둘 때 자료 구조는 SYMTAB는 리스트를 이용해 구현하여서, 원하는 SYMBOL을 찾을 수 있도록 하여야하고, INTERMEMIAT는 큐를 이용하여서 먼저 들어온 코드가 가장 먼저 나갈 수 있게 만들어야 하기 때문이다.

PASS1에서는 Object code를 읽어내어서 원시버전의 리스트로 변환 하기위해서 필요하며,

PASS2는 변환된 원시버전의 리스트를 읽어내기 위해서 필요하다.

그리고 이 원시프로그램을 Object code만을 읽어서 생성하는 과정에서는 SYMTAB가 따로 주어지지 않는 이상 기존의 저장된 SYMTAB를 읽어낼 수 없는 문제가 발생한다.

그리고 INTERMEDIAT에 추가로 함께 저장되는 변수들의 저장 값 또한 따로 지정해 주지 않는 이상 컴퓨터에서 임의적으로 설정을 할 수 없게되는 문제가 발생하게 된다.


2) 교과서 Chapter 2. AssemblersExercises 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

 

 

728x90
반응형