How an Assembler Works

Download Report

Transcript How an Assembler Works

Computer Science 101
How the Assembler Works
Assembly Language Programming
Translation and Loading
• Assembler
– Translates a symbolic assembly language
program into machine language
– Tasks performed
• Convert symbolic op codes to binary
• Convert symbolic addresses to binary
• Perform the assembler services requested by the
pseudo-ops
• Put the translated instructions into a file for future
use
Translation and Loading (continued)
• Op code table
– Alphabetized list of all legal assembly language
op codes and their binary equivalents
• In assembly language:
– A symbol is defined when it appears in the
label field of an instruction or data pseudo-op
• Pass
– Process of examining and processing every
assembly language instruction in the program,
one instruction at a time
Structure of the Opcode Table
Translation and Loading (continued)
• First pass over source code
– Assembler looks at every instruction
• Binding
– Process of associating a symbolic name with a
physical memory address
• Primary purposes of the first pass of an
assembler
– To bind all symbolic names to address values
– To enter those bindings into a symbol table
Generating a Symbol Table
Generating a
symbol table
.begin
in x
load zero
compare x
jumpgt endif
subtract x
store x
endif: output x
halt
x: .data 0
zero: .data 0
.end
Translation and Loading (continued)
• Location counter
– Variable used to determine the address of a
given instruction
• Second pass
– Assembler translates source program into
machine language
• After completion of pass 1 and pass 2
– Object file contains the translated machine
language object program
Generating
machine code
Opcode
table
Source program
.begin
in x
load zero
compare x
jumpgt endif
subtract x
store x
endif: out x
halt
x: .data 0
zero: .data 0
.end
load
store
clear
add
increment
subtract
decrement
compare
jump
jumpgt
jumpeq
jumplt
jumpneq
in
out
halt
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111