0% found this document useful (0 votes)
48 views

01 Introduction

This document provides an overview of a systems programming course. The course introduces concepts of system programming including machine architecture, assembly language, macro facilities, loaders, linkers, compilers and interpreter design. It covers topics such as simplified instructional computers, assembly language programming, two-pass and one-pass assemblers, loaders and linkers. The document discusses course objectives, content, textbooks, grading policy and expectations. It also provides explanations of concepts like system software, BIOS, high-level vs low-level languages, object code, compilers, assemblers, interpreters, linkers and memory.

Uploaded by

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

01 Introduction

This document provides an overview of a systems programming course. The course introduces concepts of system programming including machine architecture, assembly language, macro facilities, loaders, linkers, compilers and interpreter design. It covers topics such as simplified instructional computers, assembly language programming, two-pass and one-pass assemblers, loaders and linkers. The document discusses course objectives, content, textbooks, grading policy and expectations. It also provides explanations of concepts like system software, BIOS, high-level vs low-level languages, object code, compilers, assemblers, interpreters, linkers and memory.

Uploaded by

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

Systems Programming

Introduction
Course Description

This course introduces the concepts and techniques of system programming.


The course covers the following topics Machine Architecture, Machine
Language, Assembly Language, Two Pass Assemblers, One Pass Assemblers,
Macro Facilities, Conditional Macros, Macro Processors, Loaders, Linkers,
Formal Languages, The Design of Translators (Compilers and Interpreters).
Course Objectives

 Understand the architecture of a hypothetical machine, its assembly


language, and macro language.
 Write programs in assembly language.
 Describe the syntax of different programming languages using formal
grammar.
 Understand different object file formats.
 Master the concepts and theory behind the implementation of high-level
programming languages.
 Design assemblers, linkers and loaders and assess related design decisions
Course Content
Serial Description
Introduction to Systems Programming
1

Simplified Instructional Computer (SIC)


2

Sic and Sic/xe programming examples


3

Simple two pass assembler


4

Simple two pass assembler


5

Machine Independent Assembler features (literals, symbols, expression)


6

Expression
7

One-pass assembler
8

Loader
9

Linker
10

Introduction to Compilers
11

Compiler design
12

Compiler design stages part 1


13

Compiler design stages part 2


14

15 Revision
Textbook
Grading Policy
th
 7 Week (30%)
Exam (20) + Quiz(10)
th
 12 Week (20%)
 Project (20)
 Coursework (10%)
 Section Assignments (5) + Section Quiz (5)
 Final (40%)
 Exam (40)
Expectations (Students/Lecturer)

 What I expect:
 Read, Study, Do your tasks
 What I do not expect:

No Late arrivals No side talk No Mobile No Food/Drink

you will
Attend an interesting lecture

And achieve the learning outcomes


What is a System Software?

 System Software consists of a variety of programs that support the operation of a


computer.
 The programs implemented in either software and (or) firmware that makes the
computer hardware usable.
 The software makes it possible for the users to focus on an application or other
problem to be solved, without needing to know the details of how the machine works
internally.
Example: BIOS (Basic Input Output System)

 BIOS, or Basic Input/Output System, is software stored on a small


memory chip, also known as firmware. BIOS is found on the
motherboard, and it is the very first software to run after a computer
starts.
 BIOS instructs the computer on how to perform basic functions like
booting and keyboard control; it is also used to identify and
configure the hardware in a computer such as the hard drive, CPU,
memory, and related equipment.
 Finally, it manages data flow between the computer's operating
system (OS) and attached devices.
System Software and Architecture

 System Software vs. Application


 One characteristic in which most system software differs from application software is
machine dependency.
 System programs are intended to support the operation and use of the computer
itself, rather than any particular application.
•Examples of system software
 Text editor, assembler, compiler, loader or linker, debugger, macro processors,
operating system, database management systems, software engineering tools, …
System Software and Architecture

 Text editor
–To create and modify the program
 Compiler and assembler
–To translate programs into machine language
 Loader or linker
–To load the translated programs into memory and prepare for execution
 Debugger
–To help detect errors in the program
System Software and Architecture
Difference Between High-Level Language
and Low-Level Language

 A language is basically a mode of communication, because it is


used to share information, ideas, and opinions. In computer
systems, programming languages are used by the software
developers or programmers to creates applications or software
systems.
 Based on the closeness of a programming language to the system
hardware (mainly processor), computer programming languages
are classified into two categories namely, high-level languages and
low-level languages.
 The most fundamental difference between the two is that low-level
languages are closer to the system hardware and require the
knowledge of hardware to write the instructions; whereas high-level
programming languages are the machine independent languages
that do not require the hardware knowledge to write instructions.
What is a High-Level Language?

 A High-Level Language is a
computer programming
language that uses English
like statements to write the
computer instructions. High-
level languages are most
widely programming
languages because they are
easy to understand to human
being.
What is a Low-Level Language?

 A Low-Level Language is also a


category of computer programming
language in which the computer
codes are written in the binary
language or machine codes.
Because of this, low-level language
is sometimes also known as machine
language. The low-level language is
less friendly for human
(programmer), but more friendly for
machine because the computer
processor can directly process the
codes written in the low-level
language.
What is object code?

 Object code is machine-readable code that provides instructions to a


target computing platform, as defined by its operating
system and hardware architecture. Object code is written
in binary language (0s and 1s) because this is the only language a
computer can understand. The code is typically packaged in
an executable format that can be loaded into the computer's memory in
preparation for processing. The processor uses this data to execute
operations the software defines.
System Software and Architecture
System Software and Architecture

 •Compiler: is a program whose task is to accept as input a source program written in a


certain high-level language and to produce as output an object code or assembly code.
 •Interpreter: is a program that ultimately performs the same function as a compiler, but
in a different manner. It works by scanning through the source program instruction by
instruction. As each instruction is encountered, the interpreter translates it into machine
code and executes it directly.
 •Assembler: is a program that automatically translates the source program written in
assembly language and to produce as output an object code written in binary machine
code.
 •Linker: is a program that takes one or more objects generated by compilers and
assembles them into a single executable program.
 •Loader: (is a routine that) loads an object program into memory of the processor and
prepares it for execution
Compiler
Assembler
Interpreter
Comparison between Compiler and Interpreter

Compiler Interpreter

Converts the source code program into Converts each source program line into
machine code before program execution machine code as it executes, line by line.

Can be removed from memory after Must be continuously resident in memory while
compilation is finished the program is being executed

Compilation is faster. Interpretation is slower.

Compilation results in an object code on No object code results for that can be
direct execution executed later

More complicated error checking Easier error checking


Linker
Linker is a program in a system which helps to link object modules of a program into a
single object file. It performs the process of linking. Linkers are also called as link
editors. Linking is a process of collecting and maintaining piece of code and data into
a single file. Linker also links a particular module into system library. It takes object
modules from assembler as input and forms an executable file as output for the
loader. Linking is performed at both compile time, when the source code is translated
into machine code and load time, when the program is loaded into memory by the
loader. Linking is performed at the last step in compiling a program.
Memory

https://www.techtarget.com/whatis/definition/memory
A Register

 Flip flops can be used to store a single bit of binary data (1 or 0). However,
in order to store multiple bits of data, we need multiple flip-flops. N flip flops
are to be connected in order to store n bits of data. A Register is a device
that is used to store such information. It is a group of flip-flops connected in
series used to store multiple bits of data. The information stored within these
registers can be transferred with the help of shift registers.

You might also like