Intro. To System Software
Intro. To System Software
PROGRAMMING &
COMPILER
CONSTRUCTION Prof. S. R. Kulkarni
https://drive.google.com/file/d/1ymP3Vs1kwNv
Kmii57f1iVmvzPWrDjPY-/view?usp=sharing
UNIT 1
Text editor: Software that permits the creation and editing of text (i.e., application
programs).
Static Linker: Combines and resolves references between object programs and creates
the executable code.
Libraries:
Precompiled programs the creates a set of functions for use by other programs.
Dynamic Linker:
Loads and links shared libraries at run-time
Operating system:
An event driven program that make an abstraction of the computer system. The operating system
handles all resources efficiently, creates an environment for application programs to run, and
creates a friendly interface between the user and the computer system.
NEED FOR SYSTEMS SOFTWARE
A computer understands only the language of binary 1s and 0s. To implement even a simple
function, several thousand lines of binary code may be required, which is not practical for a
computer programmer.
So, a semantic gap is said to exist between the application domain (suitable for a programmer) and
execution domain (used by the computer).
This semantic gap is made manageable by introduction of a new domain called the Programming
Language (PL) Domain.
The software developer bridges the specification gap by specifying application programs in terms
of programming language i.e., a software developer converts the specification of an application
into a computer program.
The system programmer bridges the execution gap by designing system software to interface
with the machine, in machine language itself.
So, basically an application program is needed for a user to ‘talk’ to his computer and system
software is needed for the computer to ‘talk’ to its underlying machine (in its machine language
or assembly language).
Compile time
Link Editor
(Linker)
Executable
Load File
System
time Library
Loader
Dynamically
Loaded
System
Library
Running
Execution Progra Computer hardware + OS
time m
WE WILL DISCUSS
ON…
• Machine Architecture ( HYPOTHETICAL machine )
• Assemblers
• Macro Processor
• Loaders and Linkers
• Compilers
MACHINE ARCHITECTURE
•System Software & Machine Architecture
•RISC Machines
Reduced Instruction Set Computers : UltraSPARC
Architecture , Cray T3E Architecture
MACHINE
ARCHITECTURE
•Memory and Registers
•Data Formats
•Instruction Formats
•Addressing Modes
•Instruction Set
•Input and Output
ASSEMBLERS
• Translating source code written in assembly
language to object code.
• Assigning machine address to symbolic labels.
ASSEMBLER : AN ASSEMBLER IS A TRANSLATOR DENOTED AS FOLLOWS:
A TAA
- Implementation Examples
Linker
A LINKER (OR A LINKAGE EDITOR) TAKES THE OBJECT FILE,
LOADS AND COMPILES THE EXTERNAL SUBROUTINES FROM
THE LIBRARY AND RESOLVES THEIR EXTERNAL
REFERENCES IN THE MAIN-PROGRAM.
Loader
Memory
ROLE OF LOADER AND
LINKER Memory
Source Object
Program Assembler Linker
Program Object
program
ready for
Executable execution
Code
Loader
Linking Loaders Object The source
Program(s) program is first
assembled or
compiled,
producing an
object program.
Library Linking
loader A linking loader
performs all
linking and
loading
operations, and
Memory loads the program
into memory for
execution
Processing of an Object
program using LL
Linkage Editors Object
Program(s)
Linkage
Library editor
Linked
program
Relocating
loader
Processing of an Object
program using LE Memory
COMPILERS
▪ Introduction
▪ Basic Compiler Function
▪ Lexical Analysis,
▪ Syntactic Analysis
Operator-Precedence Parsing
Shift Reduce Parsing
Recursive Descent Parsing
A COMPILER IS A LANGUAGE TRANSLATOR THAT
TAKES AS INPUT A SOURCE PROGRAM IN SOME HLL
AND CONVERTS IT INTO A LOWER-LEVEL LANGUAGE
(I.E. MACHINE OR ASSEMBLY LANGUAGE).
CROSS-COMPILER
A CROSS-COMPILER RUNS ON ONE MACHINE, BUT
GENERATES MACHINE OR ASSEMBLY CODE FOR
ANOTHER MACHINE .
DECOMPILER
Phases of Lexical
Compilers analysis
Syntax analysis
Code
Optimization
Code Generation
Target Program
Phases of Compiler
1. Lexical
2. Syntax
3. Semantic
4. ICG
5. Code Optimization
6. Code Generation
DEVICE DRIVERS
1.Editors
2.Debuggers
3.IDE
4.Profilers
5.Project manager
SUMMARY