第2屮屮組譯器組譯器(assembler)eportfolio.lib.ksu.edu.tw/user/4/9/4970e059/repository/系統程式... ·...

50
2 組譯器 組譯器 組譯器 組譯器(Assembler) 基本組譯器功能 與機器相關之組譯程式功能 與機器無關之組譯程式功能 組譯器設計選項

Upload: doanxuyen

Post on 21-Mar-2018

275 views

Category:

Documents


6 download

TRANSCRIPT

  • 2(Assembler)

  • START

    END

    BYTE

    WORD

    RESB

    RESW

    2.1

    (F1)(05)

    ,X

    .

  • SIC

    RDREC-

    WRREC-

  • 1. 10

    STL14

    2. 10

    RETADR1033

    3.

    4.

    80EOF454F46

    5.

    2.1.1 SIC

    2.1

  • (forward reference)

    (RETADR)

    2.1.1 SIC

    2.1

    ??

  • 2.1.1 SIC

    2.1

    STARTEND

    BYTEWORD

    RESBRESW

  • 2.1.1 SIC

    2.1

    1 H

    27

    813 (3bytes)16

    1419 (3bytes)

  • 1 T

    27

    89 ()

    1069 16

    2.1.1 SIC

    2.1

    1 E

    27

  • 2.2

    2.1.1 SIC

    2.1

    10

  • 1.

    2.

    3.

    BYTERESW

    2.1.1 SIC

    2.1

  • 1.

    2. BYTEWORD16

    3.

    4.

    2.1.1 SIC

    2.1

  • (Operation Code Table; OPTAB)

    (Symbol Table; SYMTAB)

    (Location Counter ; LOCCTR)

    START

    2.1.2

    2.1

  • OPTAB

    Hash Tablekey

  • SYMTAB

    , , ()

    BYTE, WORD, RESB, RESW

    Hash TableHash Function

    SYMTAB

  • (literals)

  • SIC/XE

    @OPCODE @SYMBLE

    OPCODE #SYMBLE

    :

    BASEBASE SYMBLE#

    +(format 4)+OPCODE SYMBLE

    34

    2.2

  • PC-relativeBase-relative

    PC-relative

    PC-relativeBase-relative

    PC-relativeBase-relative+format 4

    PC-relativeBase-relative+

    2.2.1

    2.2

  • RDREC-

    WRREC-

  • 1036e 1 full address

    15 0006 CLOOP +JSUB RDREC 4B101036

    010010 1 1 0 0 0 1 0000 0001 0000 0011 0110

    4 B 1 0 1 0 3 6

    op(6) n i x b p e disp(20)

  • 10 0000 FIRST STL RETADR 17202D

    disp= RETADR -PC = 30-3 = 2D

  • 40 0017 J CLOOP 3F2FEC

    disp= CLOOP -PC = 6 -1A = -14 = FEC

    -14=1111 1110 1011+1=FEC

  • 12 0003 LDB #LENGTH 69202D

    13 BASE LENGTH

    160 104E STCH BUFFER,X 57C003

    175 1056 EXIT STX LENGTH 134000

    BASEBASE

    NOBASEBASE

    disp= BUFFER-PC=0036-1051= -101B -101BBASE-related disp= BUFFER-B=0036-0033=3

    disp= LENGTH-PC=0033-1059= -1026 disp= LENGTH-B=0033-0033=0

  • 55 0020 LDA #3 010003

    133 103C +LDT #4096 75101000

    4096=(01000)16

  • 12 0003 LDB #LENGTH 69202D

    LENGTHLENGTHB

    LENGTH=0033=PC+displ=0006+02D

  • 70 002A J @RETADR 3E2003

  • 5 0000 COPY START 0

    10 0000 FIRST STL RETADR 17202D

    displacement= RETADR -PC = 30-3 = 2D

    12 0003 LDB #LENGTH 69202D

    (immediate operand)LENGTH

    LENGTH B

    LENGTH=0033=PC+displacement=0006+02D

    if immediate mode is specified, the target address becomes the

    operand

    (B)=0033

  • 13 BASE LENGTH

    15 0006 CLOOP +JSUB RDREC 4B101036

    Op code + n i x b p e + 20bit displacement

    48 (1 1) (0 0 0 1) + 01036() 20 000A LDA LENGTH 032026

    0033=000D+disp

    Op code + n i x b p e + 12bit displacement

    00 (1 1) (0 0 1 0) + 026

    25 000D COMP #0 290000

    op code + n i x b p e + 12bit displacement

    28 (0 1) (0 0 0 0) + 000

    30 0010 JEQ ENDFIL 332007

    001A=0013+disp

    Op code + n i x b p e + 12bit displacement

    30 (1 1) (0 0 1 0) + 007

  • 35 0013 +JSUB WRREC 4B10105D Op code + n i x b p e + 20bit displacement

    48 (1 1) (0 0 0 1) + 0105D()

    40 0017 J CLOOP 3F2FEC displacement= CLOOP -PC = 6 -1A = -14 = FEC

    0006=001A+disp

    Op code + n i x b p e + 12bit displacement

    3C (1 1) (0 0 1 0) + FEC

    45 001A ENDFIL LDA EOF 032010 002D=001D+disp

    Op code + n i x b p e + 12bit displacement

    00 (1 1) (0 0 1 0) + 010

    50 001D STA BUFFER 0F2016 0036=0020+disp

    Op code + n i x b p e + 12bit displacement

    0C (1 1) (0 0 1 0) + 016

  • RDREC

  • WRREC

  • 2.2.2 (Relocation)

    2.2

  • 2.300102D 102DA

    102D()THREE

    2000h

    2.2.2

    2.2

    55 101B LDA THREE 00102D

    2-2SIC

    55 201B LDA THREE 00102D

  • 1M

    27 16

    89 16

    JSUB

    M00000705

    (byte)

    (nibble

  • 2.6

  • Relocation

    SIC

    SIC/XE

    immediate addressing,

    PC-relative, BASE-relative,