Class 3.21 Assembler. Compiler. Interpreterx
Download
Report
Transcript Class 3.21 Assembler. Compiler. Interpreterx
Assembler, Compiler, MIPS simulator
• Assembly, Assembler, Linker
Assembling, Linking.
When to use assembly. Drawbacks of
assembly
• SPIM simulator.
Writing a program. Running it.
• Syntax of MIPS assembly
Assembly & Machine Instructions
What is Assembly ?
Symbolic representation of a computer’s binary encoding machine language
Programming view of the architecture of a particular
processor.
machine instruction
assembly language
statement
0000 0001 0010 1011 1000 0000 0010 0000
add $t0,$t1,$t2
Assembly vs. Machine Instructions
machine instruction
0000 0001 0010 1011 1000 0000 0010 0000
assembly language
statement
add $t0,$t1,$t2
Machine instructions:
• Are beneficial to use in computers.
• It is hard for humans to keep track of machine instructions ones
and zeros.
Assembly: By using symbols programmers gain flexibility in
describing the computation.
• Assembly language is a compact notation.
• Symbolic names for operations and locations
• Programming facilities – macros, pseudoinstructions.
Assembling, linking
•
A tool called an assembler translates assembly language into
binary instructions - object module.
•
Another tool, called a linker combines a collection of object
and library files into an executable file, which a computer can
run.
header
Compiling, linking
C source code
Compiler
Loadable Module
(Executable File)
In a high level programming language like C or Java a programmer
is mostly unaware of computer architecture.
The same source program can run (after compiling) on any
processor family.
That is done by sophisticated compilers which know exactly how
to translate the high level program to the particular machine
language.
Interpreters
There are two ways to run programs written in a highlevel language.
The most common is to compile the program;
the other method is to pass the program through an
interpreter.
Interpreter is a program that executes instructions
written in a high-level language.
Interpreters vs. compilers
Interpreting code is slower than running the compiled code
because the interpreter must analyze each statement in the program
each time it is executed and then perform the desired action
whereas the compiled code just performs the action within a fixed context
determined by the compilation
This run-time analysis is known as "interpretive overhead".
Access to variables is also slower in an interpreter because the mapping of
identifiers to storage locations must be done repeatedly at run-time rather
than at compile time.
Interpreter
High level
language source
code
Executable Code
Compiler
Interpreter
Intermediate
representation
(bytecode)
Where we need the Assembly
The primary reason to program in assembly language, as
opposed to an available high-level language, is that the speed
or size of a program is critically important.
A hybrid approach, in which most of a program is written in a highlevel language and time-critical sections are written in assembly
language, builds on the strengths of both languages
Cases when no high-level language or compiler is available on a
particular computer
Ability to exploit specialized instructions, for example, string
copy or pattern-matching instructions.
Assembly language disadvantages versus
High level languages
Assembly programs are machine-specific and must be totally
rewritten to run on another computer architecture.
Assembly language programs are longer than the equivalent
programs written in a high-level language.
programmers write roughly the same number of lines of code per day
in assembly and in high-level languages
longer programs are more difficult to read and understand and they
contain more bugs