1 / 44

System Software

System Software. ASSEMBLER - 1. Role of Assembler. Assembler. Object Code. Linker. Source Program. Executable Code. Loader. Assembler Directives. Basic assembler directives START END BYTE WORD RESB RESW. SIC Instruction Set. Load/Store: LDA/STA, LDX/STX…etc.

candidab
Download Presentation

System Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. System Software ASSEMBLER - 1

  2. Role of Assembler Assembler Object Code Linker Source Program Executable Code Loader

  3. Assembler Directives Basic assembler directives START END BYTE WORD RESB RESW

  4. SIC Instruction Set Load/Store: LDA/STA, LDX/STX…etc. Arithmetic: ADD, SUB, MUL, DIV Compare: COMP Jump: J Conditional Jump: JLT, JEQ, JGT See Appendix A for the complete list.

  5. SIC Instruction Format Opcode: 8 bits Address: one bit flag (x) and 15 bits of address 8 1 15 OPCODE X Address

  6. Example Program Purpose Reads records from input device (code F1) Copies them to output device (code 05) At the end of the file, writes EOF on the output device, then RSUB to the operating system

  7. Example Program Data transfer (RD, WD) A buffer is used to store record Buffering is necessary for different I/O rates The end of each record is marked with a null character (0016) The end of the file is indicated by a zero-length record Subroutines (JSUB, RSUB) RDREC, WRREC Save link register first before nested jump

  8. Example Program Line Source statement 5 COPY START 1000 10 FIRST STL RETADR SAVE RETURN ADDRESS 15 CLOOP JSUB RDREC READ INPUT RECORD 20 LDA LENGTH TEST FOR EOF (LENGTH = 0) 25 COMP ZERO 30 JEQ ENDFIL EXIT IF EOF FOUND 35 JSUB WRREC WRITE OUTPUT RECORD 40 J CLOOP LOOP 45 ENDFIL LDA EOF INSERT END OF FILE MARKER 50 STA BUFFER 55 LDA THREE SET LENGTH = 3 60 STA LENGTH 65 JSUB WRREC WRITE EOF 70 LDL RETADR GET RETURN ADDRESS 75 RSUB RETURN TO CALLER 80 EOF BYTE C’EOF’ 85 THREE WORD 3 90 ZERO WORD 0 95 RETADR RESW 1 100 LENGTH RESW 1 105 BUFFER RESB 4096 4096-BYTE BUFFER AREA

  9. 110 . 115 . SUBROUTINE TO READ RECORD INTO BUFFER 120 . 125 RDREC LDX ZERO CLEAR LOOP COUNTER 130 LDA ZERO CLEAR A TO ZERO 135 RLOOP TD INPUT TEST INPUT DEVICE 140 JEQ RLOOP LOOP UNTIL READY 145 RD INPUT READ CHARACTER INTO REGISTER A 150 COMP ZERO TEST FOR END OF RECORD (X’00’) 155 JEQ EXIT EXIT LOOP IF EOR 160 STCH BUFFER,X STORE CHARACTER IN BUFFER 165 TIX MAXLEN LOOP UNLESS MAX LENGTH 170 JLT RLOOP HAS BEEN REACHED 175 EXIT STX LENGTH SAVE RECORD LENGTH 180 RSUB RETURN TO CALLER 185 INPUT BYTE X’F1’ CODE FOR INPUT DEVICE 190 MAXLEN WORD 4096 195 . 200 . SUBROUTINE TO WRITE RECORD FROM BUFFER 205 . 210 WRREC LDX ZERO CLEAR LOOP COUNTER 215 WLOOP TD OUTPUT TEST OUTPUT DEVICE 220 JEQ WLOOP LOOP UNTIL READY 225 LDCH BUFFER,X GET CHARACTER FROM BUFFER 230 WD OUTPUT WRITE CHARACTER 235 TIX LENGTH LOOP UNTIL ALL CHARACTERS 240 JLT WLOOP HAVE BEEN WRITTEN 245 RSUB RETURN TO CALLER 250 OUTPUT BYTE X’05’ CODE FOR OUTPUT DEVICE 255 END FIRST

  10. Functions of a Basic Assembler Mnemonic code (or instruction name)  opcode. Symbolic operands (e.g., variable names)  addresses. Choose the proper instruction format and addressing mode. Constants  Numbers. Output to object files and listing files.

  11. Examples Mnemonic code (or instruction name)  opcode. Examples: STL 1033  opcode 14 10 33 LDA 1036  opcode 00 10 36 0001 0100 0 001 0000 0011 0011 0000 0000 0 001 0000 0011 0110

  12. Symbolic Operands We’re not likely to write memory addresses directly in our code. Instead, we will define variable names. Other examples of symbolic operands: Labels (for jump instructions) Subroutines Constants

  13. Converting Symbols to Numbers Isn’t it straightforward? Isn’t it simply the sequential processing of the source program, one line at a time? Not so, if we have forward references. • COPY START 1000 • … • LDA LEN • … • … • LEN RESW 1

  14. Example Program with Object Code Line Loc Source statement Object code 5 1000 COPY START 1000 10 1000 FIRST STL RETADR 141033 15 1003 CLOOP JSUB RDREC 482039 20 1006 LDA LENGTH 001036 25 1009 COMP ZERO 281030 30 100C JEQ ENDFIL 301015 35 100F JSUB WRREC 482061 40 1012 J CLOOP 3C1003 45 1015 ENDFIL LDA EOF 00102A 50 1018 STA BUFFER 0C1039 55 101B LDA THREE 00102D 60 101E STA LENGTH 0C1036 65 1021 JSUB WRREC 482061 70 1024 LDL RETADR 081033 75 1027 RSUB 4C0000 80 102A EOF BYTE C’EOF’ 454F46 85 102D THREE WORD 3 000003 90 1030 ZERO WORD 0 000000 95 1033 RETADR RESW 1 100 1036 LENGTH RESW 1 105 1039 BUFFER RESB 4096

  15. 110 . 115 . SUBROUTINE TO READ RECORD INTO BUFFER 120 . 125 2039 RDREC LDX ZERO 041030 130 203C LDA ZERO 001030 135 203F RLOOP TD INPUT E0205D 140 2042 JEQ RLOOP 30203D 145 2045 RD INPUT D8205D 150 2048 COMP ZERO 281030 155 204B JEQ EXIT 302057 160 204E STCH BUFFER,X 549039 165 2051 TIX MAXLEN 2C205E 170 2054 JLT RLOOP 38203F 175 2057 EXIT STX LENGTH 101036 180 205A RSUB 4C0000 185 205D INPUT BYTE X’F1’ F1 190 205E MAXLEN WORD 4096 001000 195 . 200 . SUBROUTINE TO WRITE RECORD FROM BUFFER 205 . 210 2061 WRREC LDX ZERO 041030 215 2064 WLOOP TD OUTPUT E02079 220 2067 JEQ WLOOP 302064 225 206A LDCH BUFFER,X 509039 230 206D WD OUTPUT DC2079 235 2070 TIX LENGTH 2C1036 240 2073 JLT WLOOP 382064 245 2076 RSUB 4C0000 250 2079 OUTPUT BYTE X’05’ 05 255 END FIRST

  16. Object Program Header Col. 1  H Col. 2~7  Program name Col. 8~13  Starting address (hex) Col. 14-19  Length of object program in bytes (hex) Text Col.1  T Col.2~7  Starting address in this record (hex) Col. 8~9  Length of object code in this record in bytes Col. 10~69  Object code End Col.1  E Col.2~7  Address of first executable instruction (hex) (END program_name)

  17. Object Code • H^COPY ^001000^00107A • T^001000^1E^141033^482039^001036^281030^301015^ 482061^3C1003^00102A^0C1039^00102D • T^00101E^15^0C1036^482061^081033^4C0000^454F46^ • 000003^000000….. • T^002039^1E^041030^001030^E0205D^30203F^D8205D^ • 281030^302057^549039^2C205E^38203F • T^002057^1C^101036^4C0000^F1^0010000^041030^E02079^302064^509039^DC2079^2C1036 • T^002073^07^382064^4C0000^05 • E 001000 starting address

  18. Two Pass Assembler Pass 1 Assign addresses to all statements in the program Save the values assigned to all labels for use in Pass 2 Perform some processing of assembler directives Pass 2 Assemble instructions Generate data values defined by BYTE, WORD Perform processing of assembler directives not done in Pass 1 Write the object program and the assembly listing

  19. Two Pass Assembler Read from input line LABEL, OPCODE, OPERAND Intermediate file Source program Object codes Pass 1 Pass 2 SYMTAB OPTAB SYMTAB

  20. Data Structures Operation Code Table (OPTAB) Symbol Table (SYMTAB) Location Counter(LOCCTR)

  21. OPTAB (operation code table) Content Mnemonic, machine code (instruction format, length) etc. Characteristic Static table Implementation Array or hash table, easy for search

  22. SYMTAB (symbol table) Content Label name, value, flag, (type, length) etc. Characteristic Dynamic table (insert, delete, search) Implementation Hash table, non-random keys, hashing function COPY 1000 FIRST 1000 CLOOP 1003 ENDFIL 1015 EOF 1024 THREE 102D ZERO 1030 RETADR 1033 LENGTH 1036 BUFFER 1039 RDREC 2039

  23. Two Pass Assembler – Pass 1 Pass 1 Assembler

  24. Two Pass Assembler – Pass 2 Pass 2 Assembler

  25. SIC/XE Assembler What’s new for SIC/XE? More addressing modes. Program Relocation.

  26. An SIC/XE Example Line Loc Source statement Object code 5 0000 COPY START 0 10 0000 FIRST STL RETADR 17202D 12 0003 LDB #LENGTH 69202D 13 BASE LENGTH 15 0006 CLOOP +JSUB RDREC 4B101036 20 000A LDA LENGTH 032026 25 000D COMP #0 290000 30 0010 JEQ ENDFIL 332007 35 0013 +JSUB WRREC 4B10105D 40 0017 J CLOOP 3F2FEC 45 001A ENDFIL LDA EOF 032010 50 001D STA BUFFER 0F2016 55 0020 LDA #3 010003 60 0023 STA LENGTH 0F200D 65 0026 +JSUB WRREC 4B10105D 70 002A J @RETADR 3E2003 80 002D EOF BYTE C’EOF’ 454F46 95 0030 RETADR RESW 1 100 0033 LENGTH RESW 1 105 0036 BUFFER RESB 4096

  27. 115 . READ RECORD INTO BUFFER 120 . 125 1036 RDREC CLEAR X B410 130 1038 CLEAR A B400 132 103A CLEAR S B440 133 103C +LDT #4096 75101000 135 1040 RLOOP TD INPUT E32019 140 1043 JEQ RLOOP 332FFA 145 1046 RD INPUT DB2013 150 1049 COMPR A,S A004 155 104B JEQ EXIT 332008 160 104E STCH BUFFER,X 57C003 165 1051 TIXR T B850 170 1053 JLT RLOOP 3B2FEA 175 1056 EXIT STX LENGTH 134000 180 1059 RSUB 4F0000 185 105C INPUT BYTE X’F1’ F1 195 . 200 . WRITE RECORD FROM BUFFER 205 . 210 105D WRREC CLEAR X B410 212 105F LDT LENGTH 774000 215 1062 WLOOP TD OUTPUT E32011 220 1065 JEQ WLOOP 332FFA 225 1068 LDCH BUFFER,X 53C003 230 106B WD OUTPUT DF2008 235 106E TIXR T B850 ...(omitted)

  28. A Case of Object Code Generation Figure 2.6, Line 10 STL RETADR  17 20 2D The mode bit p=1, meaning PC relative addressing mode. 6 bits 12 bits OPCODE n i x b p e Address 0001 01 1 1 0 0 1 0 0000 0010 1101 17 20 2D

  29. Instruction Format and Addressing Mode SIC/XE PC-relative or Base-relative addressing: op m Indirect addressing: op @m Immediate addressing: op #c Extended format: +op m Index addressing: op m,x register-to-register instructions larger memory -> multi-programming (program allocation)

  30. Translation Register translation Register name (A, X, L, B, S, T, F, PC, SW) and their values (0,1, 2, 3, 4, 5, 6, 8, 9) Preloaded in SYMTAB Address translation Most register-memory instructions use program counter relative or base relative addressing Format 3: 12-bit address field Base-relative: 0~4095 PC-relative: -2048~2047 Format 4: 20-bit address field

  31. PC-Relative Addressing Mode PC-relative 10 0000 FIRST STL RETADR 17202D Displacement= RETADR - PC = 30-3 = 2D 40 0017 J CLOOP 3F2FEC Displacement= CLOOP-PC= 6 - 1A= -14= FEC OPCODE OPCODE n n i i x x b b p p e e Address Address 0011 11 0001 01 1 1 1 1 0 0 0 0 1 1 0 0 (FEC)16 (02D)16

  32. Base-Relative Addressing Modes Base-relative Base register is under the control of the programmer 12 LDB #LENGTH 13 BASE LENGTH 160 104E STCH BUFFER, X 57C003 Displacement= BUFFER - B = 0036 - 0033 = 3 NOBASE is used to inform the assembler that the contents of the base register no longer be relied upon for addressing OPCODE n i x b p e Address 0101 01 1 1 1 1 0 0 (003)16

  33. Immediate Address Translation Immediate addressing 55 0020 LDA #3 010003 133 103C +LDT #4096 75101000 OPCODE OPCODE n n i i x x b b p p e e Address Address 0111 01 0000 00 0 0 1 1 0 0 0 0 0 0 1 0 (01000)16 (003)16

  34. Immediate Address Translation Immediate addressing 12 0003 LDB #LENGTH 69202D 12 0003 LDB #LENGTH 690033 The immediate operand is the symbol LENGTH The address of this symbol LENGTH is loaded into register B LENGTH=0033=PC+displacement=0006+02D If immediate mode is specified, the target address becomes the operand OPCODE OPCODE n n i i x x b b p p e e Address Address 0110 10 0110 10 0 0 1 1 0 0 0 0 1 0 0 0 (033)16 (02D)16

  35. Indirect Address Translation Indirect addressing Target addressing is computed as usual (PC-relative or BASE-relative) Only the n bit is set to 1 70 002A J @RETADR 3E2003 TA=RETADR=0030 TA=(PC)+disp=002D+0003 OPCODE n i x b p e Address 0011 11 1 0 0 0 1 0 (003)16

  36. Program Relocation

  37. Examples of Program Relocation Example Fig. 2.2 Absolute program, starting address 1000 5 2000 1000 COPY START 1000 10 2000 1000 FIRST STL RETADR 141033 142033 15 2003 1003 CLOOP JSUB RDREC 482039 483039 20 2006 1006 LDA LENGTH 001036 002036 25 2009 1009 COMP ZERO 281030 282030 30 200C 100C JEQ ENDFIL 301015 302015 35 200F 100F JSUB WREC 482061 483061 40 2012 1012 J CLOOP 3C1003 3C2003 45 2015 1015 ENDFIL LDA EOF 00102A 00202A 50 2018 1018 STA BUFFER 0C1039 0C2039 55 201B 101B LDA THREE 00102D 00202D 60 201E 101E STA LENGTH 0C1036 0C2036 65 2021 1021 JSUB WREC 482061 483061 70 2024 1024 LDL RETADR 081033 082033 75 2027 1027 RSUB 4C0000 4C0000 80 202A 102A EOF BYTE C'EOF' 454E46 454E46 85 202D 102D THREE WORD 3 000003 000003 90 2030 1030 ZERO WORD 0 000000 000000 95 2033 1033 RETADR RESW 1 100 2036 1036 LENGTH RESW 1 105 2039 1039 BUFFER RESB 4096

  38. Examples of Program Relocation Example Fig. 2.2 Absolute program, starting address 1000 ====  2000 5 2000 1000 COPY START 1000 10 2000 1000 FIRST STL RETADR 141033 142033 15 2003 1003 CLOOP JSUB RDREC 482039 483039 20 2006 1006 LDA LENGTH 001036 002036 25 2009 1009 COMP ZERO 281030 282030 30 200C 100C JEQ ENDFIL 301015 302015 35 200F 100F JSUB WREC 482061 483061 40 2012 1012 J CLOOP 3C1003 3C2003 45 2015 1015 ENDFIL LDA EOF 00102A 00202A 50 2018 1018 STA BUFFER 0C1039 0C2039 55 201B 101B LDA THREE 00102D 00202D 60 201E 101E STA LENGTH 0C1036 0C2036 65 2021 1021 JSUB WREC 482061 483061 70 2024 1024 LDL RETADR 081033 082033 75 2027 1027 RSUB 4C0000 4C0000 80 202A 102A EOF BYTE C'EOF' 454E46 454E46 85 202D 102D THREE WORD 3 000003 000003 90 2030 1030 ZERO WORD 0 000000 000000 95 2033 1033 RETADR RESW 1 100 2036 1036 LENGTH RESW 1 105 2039 1039 BUFFER RESB 4096 ====  2000

  39. Examples of Program Relocation Example Fig. 2.6: Except for absolute address, the rest of the instructions need not be modified not a memory address (immediate addressing) PC-relative, Base-relative The only parts of the program that require modification at load time are those that specify direct addresses 5 1000 0000 COPY START 0 10 1000 0000 FIRST STL RETADR 17202D 17202D 12 1003 0003 LDB #LENGTH 69202D 69202D 13 BASE LENGTH 15 1006 0006 CLOOP +JSUB RDREC 4B101036 4B102036 20 100A 000A LDA LENGTH 032026 032026 25 100D 000D COMP #0 290000 290000 30 1010 0010 JEQ ENDFIL 332007 332007 35 1013 0013 +JSUB WRREC 4B10105D 4B10205D 40 1017 0017 J CLOOP 3F2FEC 3F2FEC 45 101A 001A ENDFIL LDA EOF 032010 032010 50 101D 001D STA BUFFER 0F2016 0F2016 55 1020 0020 LDA #3 010003 010003 60 1023 0023 STA LENGTH 0F200D 0F200D 65 1026 0026 +JSUB WRREC 4B10105D 4B10205D 70 102A 002A J @RETADR 3E2003 3E2003 80 102D 002D EOF BYTE C'EOF' 454F46 454F46 95 1030 0030 RETADR RESW 1 100 1036 0036 BUFFER RESB 4096

  40. Examples of Program Relocation Example Fig. 2.6: Except for absolute address, the rest of the instructions need not be modified not a memory address (immediate addressing) PC-relative, Base-relative The only parts of the program that require modification at load time are those that specify direct addresses 5 1000 0000 COPY START 0 10 1000 0000 FIRST STL RETADR 17202D 17202D 12 1003 0003 LDB #LENGTH 69202D 69202D 13 BASE LENGTH 15 1006 0006 CLOOP +JSUB RDREC 4B101036 4B102036 20 100A 000A LDA LENGTH 032026 032026 25 100D 000D COMP #0 290000 290000 30 1010 0010 JEQ ENDFIL 332007 332007 35 1013 0013 +JSUB WRREC 4B10105D 4B10205D 40 1017 0017 J CLOOP 3F2FEC 3F2FEC 45 101A 001A ENDFIL LDA EOF 032010 032010 50 101D 001D STA BUFFER 0F2016 0F2016 55 1020 0020 LDA #3 010003 010003 60 1023 0023 STA LENGTH 0F200D 0F200D 65 1026 0026 +JSUB WRREC 4B10105D 4B10205D 70 102A 002A J @RETADR 3E2003 3E2003 80 102D 002D EOF BYTE C'EOF' 454F46 454F46 95 1030 0030 RETADR RESW 1 100 1036 0036 BUFFER RESB 4096 ==  1000

  41. How to Make Program Relocation Easier Use program-counter (PC) relative addresses Did you notice that we didn’t modify the addresses for JEQ, JLT and J instructions? We didn’t modify the addresses for RETADR, LENGTH, and BUFFER in Figure 2.6 either.

  42. Relocatable Program Modification record Col 1  M Col 2-7 Starting location of the address field to be modified, relative to the beginning of the program Col 8-9 Length of the address field to be modified, in half - bytes

  43. Object File with M-Records Modification records are added to the object files. Example: HCOPY 001000 001077 T000000 1D 17202D…4B101036… T00001D …… … M000007 05  Modification Record …… E000000

  44. Object Code

More Related