Professional Documents
Culture Documents
Low
Level Languages
System software
Translating Languages
English: Display the sum of A times B plus C. C: printf (A * B + C); Intel Machine Language: A1 00000000 F7 25 00000004 03 05 00000008 E8 00500000
Assembly Language: Mover areg ,A mul areg,B add areg,C print areg
System software
level means closeness to the way in which the machine has been built. Low level languages are machine oriented and require extensive knowledge of computer hardware and its configuration.
System software
Machine Language
first generation language only language that is directly understood by the computer. It does not needs any translator program. also call it machine code and it is written as strings of 1's (one) and 0s (zero). When a sequence of codes is fed to the computer, it recognizes the codes and converts it in to electrical signals needed to run it.
System software
Advantage
Programs
written in machine language run very fast because no translation program is required for the CPU.
System software
Disadvantages
1.
2.
3.
It is very difficult to program in machine language. The programmer has to know details of hardware to write program. The programmer has to remember a lot of codes to write a program which results in program errors. It is difficult to debug the program.
System software
Assembly Language
Symbolic Representation of a numeric machine language Why?
Easy to read and understand. Easy to remember ADD, M0V rather than their hexadecimal numbers. Performance: A good assembly language program can beat any optimizing compiler. Access to Machine: A high level language does not have access to underlying machine.
language is a human-readable notation for the machine language that a specific computer architecture uses Assembly language programming is writing machine instructions in mnemonic form
System software
operation codes-eliminates the need to memorize numeric operation codes.Ex: ADD,SUB,MOVEM,MOVER Symbolic operands-symbolic names can be used as operands Data declarations-data can be declared in a variety of notations
System software
Statement
Assembly
language statements are written one per line An assembly code program thus consists of a sequence of assembly language statements, where each statement contains a mnemonic.
System software
Statement format
<Operand spec> [,
System software
Label
A label is an identifier. It is Symbolic name for memory addresses. Labels are used extensively in programs to reduce reliance upon programmers remembering where data or code is located A label is a piece of text that gets assigned the memory address of where it is located in the file It starts with first column A label, when declared, begins with a valid character (A..Z).
System software
Opcode
Opcode
Opcode
Operand
The operand field consists of additional information or data that the opcode requires. Operand specification is of the form Register operand, Memory operand. A statement can have two operands and the first operand is always a Register. < operand > specification has the syntax <symbolic name > [ + < displacement > ] [ < index register>]
Imperative Statement
Declarative Statement
Assembler Directive
System software
Imperative Statement
Indicates
an action to be performed during the execution of assembled program Each statement translates into one machine instruction Eg; MOVER CREG ONE
System software
Declarative Statement
Indicates syntax
some declaration
Assembler Directives
We need to give the assembler information about the program such as: - where to locate code - allocating memory - setting up constants
We accomplish the above using Directives. The assembler directives are specific to the assembler. The assembler recognizes keywords and knows what to do
System software
ASSEMBLER DIRECTIVES
Assembler directives are instructions to the assembler, and are not translated into machine instructions. The use of directives gives the programmer some control over the operation of the assembler, increasing flexibility in the way programs are written. Ex: START < constant> START 100 (Giving direction to the assembler to start execution from the memory 100)
System software
Assembler Directives
ORIGIN -This tells the assembler where to insert the program code. Any instructions that follow this directive will be inserted sequentially into memory. Origin < Address space> EQU This will associate label with address specification. it is used mainly for readability in code. <Symbol> EQU <address specification> END It indicates the end of the source program END [< operand spec>] operand specification Indicates address of instruction where execution should System software begin.
Assembler Directives
LTORG Permits a programmer to specify where literals should be placed. At every LTORG statement assembler allocates memory to literals of a literal pool A literal pool contains all literals used in the program since start or since last LTORG statement.
System software
Assembler
Are
programs which generate machine code instructions from a source code program written in assembly language
System software
Design specification
How to design an assembler? What information is required? A Language processor has to analyze the source program and synthesize the target program There two main functions are Analyze the source program-Analysis phase Synthesize the target program-Synthesis phase
System software
AnalysisSynthesis Model
Breaks the source program into its component parts ,create a symbol table and create an intermediate representation of the source program Constructs the desired target program from the intermediate representation
2.
System software
Analysis Phase
Its primary function is to build the symbol table and perform LC Processing. LC processing means determine the memory address of all program elements. LC is initialized to the constant specified in start statement and Does the following : It isolates label,opcode and operand fields If label is present,enter label and address in symbol table Check validity of Mnemonic code from mnemonic table Perform LC processing
System software
1. 2.
3. 4.
Synthesis Phase
Mainly concerned with constructing target language statements which have same meaning as a source statement. It achieves these by doing the following: Obtain opcode from Mnemonic table Obtain address of operand from symbol table. Synthesize the machine instruction
1. 2. 3.
System software
System software
Assembly Process
Two
pass process: Pass One: Collects definitions of symbols, statement labels etc. Pass Two: Re-reads the statements, replaces symbolic names with values, and translates to target language. Why Two Passes?
Need to find values of names that have not yet been defined.
System software
Pass I :
Separate label,opcode and operand fields Build the symbol table Perform LC processing Construct IR
1.
Pass II
Synthesize the target program
System software
System software
System software
Pass I
Pass I
6. IF Imperative stmt then code= machine opcode , if operand is literal then,enter into literal table else save address values assigned to labels in symbol tables and increment LC and generate IC (IS,code) (S,address). 7. If DC,code=machine opcode, allocate memory and update LC and generate IC ( DL,code) For processing END statement, Repeat step 3 and generate IC(AD,02)
System software
Pass II
the information collected in pass I to synthesize the target program. Pass II:loop until the end of the program
Uses
1. read in a line of code 2. If an LTORG stmt,assemble the literals in Buffer and size =size of memory required for literals. 3. If start or origin,LC=address specified ,size=0
System software
Pass II
4. If Declarative stmt,assemble constant in Buffer and size= size required by DC/DS stmt. 5. if an Imperative stmt,get operand address and assemble in buffer,size=size of instruction. 6. If Size !=0 (i)move contents of the buffer to code_area + LC. (ii) LC=LC+size. Processing end stmt,repeat steps 2 and 6.
System software
the time END stmt is processed, symbol table contains address of all symbols. TII contains all instructions containing forward references. All entries in TII can be processed to complete the concerned instruction.
System software
features -assembler
allows the programmer to use mnemonics when writing source code programs. variables are represented by symbolic names, not as memory locations symbolic code is easier to read and follow error checking is provided changes can be quickly and easily incorporated with a re-assembly
System software
it is machine dependent. A program written for one computer might not run in other computers with different hardware configuration. the programmer requires knowledge of the processor architecture and instruction set many instructions are required to achieve small tasks source programs tend to be large and difficult to follow
System software
Disadvantages: