0% found this document useful (0 votes)
12K views31 pages

Assemblers

Assemblers translate assembly language into machine code. They perform several functions including translating mnemonic operation codes into machine code, assigning addresses to symbolic labels, and generating an image of memory. Assemblers use one or two passes. In a one-pass approach, forward references must be handled carefully. In a two-pass approach, the first pass validates opcodes, assigns addresses, and builds symbol tables, while the second pass translates instructions and generates object code. Key data structures include operation code tables and symbol tables, which are typically implemented as arrays or hash tables to enable efficient lookups.

Uploaded by

Swati Bhonde
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12K views31 pages

Assemblers

Assemblers translate assembly language into machine code. They perform several functions including translating mnemonic operation codes into machine code, assigning addresses to symbolic labels, and generating an image of memory. Assemblers use one or two passes. In a one-pass approach, forward references must be handled carefully. In a two-pass approach, the first pass validates opcodes, assigns addresses, and builds symbol tables, while the second pass translates instructions and generates object code. Key data structures include operation code tables and symbol tables, which are typically implemented as arrays or hash tables to enable efficient lookups.

Uploaded by

Swati Bhonde
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

Assemblers

10/21/2007 Dr. Monther Aldwairi 1


Fundamental Functions
• Generate machine language
– Translate mnemonic operation codes to machine
code
• Assign addresses to symbolic labels used by
the programmer

10/21/2007 Dr. Monther Aldwairi 2


Additional Functions
• Generate an image of what memory must look
like for the program to be executed.
• Interpret assembler directives (Pseudo-
Instructions)
– They provide instructions to the assembler
– They do not translate into machine code
– They might affect the object code

10/21/2007 Dr. Monther Aldwairi 3


Input / Output
• Input Assembly Code
• Output
– Assembly Listing
– Object Code
• Intermediate files
– Assembly Listing
– LOCCTR
– Instruction Length
– Error Flags
10/21/2007 Dr. Monther Aldwairi 4
Input

10/21/2007 Dr. Monther Aldwairi 6


Output/ Assembly Listing

10/21/2007 Dr. Monther Aldwairi 7


Output
Record Type Column Content
1 Record Type = 1
2-3 Byte Count
1
4-7 The execution start address (Hex)
8-9 Check Sum (CS)
1 Record Type = 2
2-3 Byte Count
4-7 The load address for the instruction/data
2 (Hex)
8-57 The code to be loaded in Hex
58-59 Check Sum (CS)

10/21/2007 Dr. Monther Aldwairi 8


Object Code

10/21/2007 Dr. Monther Aldwairi 9


Design Approach
• One Pass: Line by Line
– forward reference?
• Two Passes:
– Pass 1
– Pass2
• Intermediate files

10/21/2007 Dr. Monther Aldwairi 10


One-Pass Assembler
• The main problem is forward reference.
• Eliminating forward reference
– Simply ask the programmer to define variables
before using them.
• However, ?!
– Backward jumps is too restrictive.
– Forward jumps (Subroutine calls, Loops)

10/21/2007 Dr. Monther Aldwairi 11


Input

10/21/2007 Dr. Monther Aldwairi 12


Output/ Assembly Listing

10/21/2007 Dr. Monther Aldwairi 13


Output Object Code
Record Type Column Content
1 Record Type = 1
2-3 Byte Count
1
4-7 The execution start address (Hex)
8-9 Check Sum (CS)
1 Record Type = 2
2-3 Byte Count
4-7 The load address for the instruction/data
2 (Hex)
8-57 The code to be loaded in Hex
58-59 Check Sum (CS)

10/21/2007 Dr. Monther Aldwairi 14


Example

10/21/2007 Dr. Monther Aldwairi 15


Example

10/21/2007 Dr. Monther Aldwairi 16


Forward Reference
• For any symbol that has not yet been defined
1. omit the address translation
2. insert the symbol into SYMTAB, and mark this
symbol undefined
3. the address that refers to the undefined symbol is
added to a list of forward references associated
with the symbol table entry
4. when the definition for a symbol is encountered,
the proper address for the symbol is then inserted
into any instructions previous generated according
to the forward reference list
10/21/2007 Dr. Monther Aldwairi 17
Load-and-go Assembler (Cont.)
• At the end of the program
– any SYMTAB entries that are still marked with *
indicate undefined symbols
– search SYMTAB for the symbol named in the END
statement and jump to this location to begin
execution
• The actual starting address must be specified
at assembly time

10/21/2007 Dr. Monther Aldwairi 18


Processing Example

After scanning line 40

10/21/2007 Dr. Monther Aldwairi 19


Processing Example

After scanning line 160

10/21/2007 Dr. Monther Aldwairi 20


Two Passes
• Pass 1
– Validate Opcodes
– Assign addresses to all statements in the program
– Scan the source for labels and save their values
– Perform some processing of assembler directives
• Determine the length of areas defined by DC, DS
• Pass 2
– Translate/assemble the instructions
– Generate Data Values defined by DC
– Process the rest of the assembler directives
– Write the Object Code
10/21/2007
and Assembly Listing
Dr. Monther Aldwairi 21
Data Structures
• Operation Code Table (OPTAB)
– Opcode, Instruction format, and length
– Pass 1: Validate opcodes
– Pass2: Assemble instructions
• Symbol Table (SYMTAB)
– Label name and value, error flags
– Pass 1: Created!
– Lookup symbols to insert in assembled instr.
• Location Counter
– Initialed to the Org or End
10/21/2007 Dr. Monther Aldwairi 22
A Simple Two Pass Assembler
Implementation

Source READ (Label, opcode, operand)


program

Pass 1 Pass 2 Object


codes

OPTAB SYMTAB SYMTAB

Mnemonic and Label and address Label and address


opcode mappings mappings created mappings are referenced
are referenced

10/21/2007 Dr. Monther Aldwairi 23


Hash Tables
• OPTAB is static (access)
– Retrieval efficiency
– Key : Mnemonic operation
• SYMTAB (add, access)
– Insertion and Retrieval efficiency
– Key: Label Name
• LOOP1, LOOP2, LOOP3…, A, X, Y, Z…

10/21/2007 Dr. Monther Aldwairi 24


OPTAB (operation code table)
• Content
– The mapping between mnemonic and machine code. Also
include the instruction format, available addressing
modes, and length information.
• Characteristic
– Static table. The content will never change.
• Implementation
– Array or hash table. Because the content will never
change, we can optimize its search speed.
• In pass 1, OPTAB is used to look up and validate
mnemonics in the source program.
• In pass 2, OPTAB is used to translate mnemonics to
machine instructions.
10/21/2007 Dr. Monther Aldwairi 25
Symbol Table (SYMTAB)
• Content
– Include the label name and value (address) for each label
in the source program.
– Include type and length information (e.g., int64)
– With flag to indicate errors (e.g., a symbol defined in two
places)
• Characteristic
– Dynamic table (I.e., symbols may be inserted, deleted, or
searched in the table)
• Implementation
– Hash table can be used to speed up search
– Because variable names may be very similar (e.g., LOOP1,
LOOP2), the selected hash function must perform well
with such non-random keys.
10/21/2007 Dr. Monther Aldwairi 26
Pass 1 Pseudo Code

10/21/2007 Dr. Monther Aldwairi 27


Pass 1

10/21/2007 Dr. Monther Aldwairi 28


Pass 1

10/21/2007 Dr. Monther Aldwairi 29


Pass 2 Pseudo Code

10/21/2007 Dr. Monther Aldwairi 30


Pass 2

10/21/2007 Dr. Monther Aldwairi 31


Pass 2

10/21/2007 Dr. Monther Aldwairi 32

You might also like