AN introduction concept to system programming. SIC is simulation machine architecture that represents RISC and CISC (real machine architecture) for teaching and learning purpose.
This document discusses various protocols for web connectivity, including communication gateways, HTTP, SOAP, REST, and WebSockets. Communication gateways allow different protocols to be used at each end of a connection. HTTP is the most widely used application layer protocol and uses request/response methods. SOAP is an XML-based protocol for exchanging objects between applications. REST is a simpler alternative to SOAP that uses HTTP methods like GET, POST, PUT and DELETE. WebSockets enable bidirectional communication over a single TCP connection.
The document provides a history of the development of virtual reality technologies from the 1800s to present day. It discusses early concepts and inventions related to stereoscopic vision, virtual environments, and head-mounted displays. Key developments discussed include the Sensorama machine (1956), Telesphere Mask (1960), Headsight (1961), Sword of Damocles (1968), VIDEOPLACE (1975), Sayre Gloves (1982), DataGlove and EyePhone by VPL Research Inc. (1985), Virtuality arcade machines (1991), Virtual Vietnam PTSD therapy (1997), and Oculus Rift (2010). The document traces how VR has evolved from early concepts to commercial applications today.
This document discusses swap space management. It explains that swap space uses disk space as an extension of main memory through swapping and paging. It discusses how operating systems may support multiple swap spaces on separate disks to balance load. It also notes that it is better to overestimate than underestimate swap space needs to avoid crashing the system from running out of space. The document then covers locations for swap space, including within the file system or a separate partition, and tradeoffs of each approach.
The document discusses the concept of the metaverse, which is described as a virtual ecosystem that combines aspects of both the physical and virtual worlds. Some key points made about the metaverse include:
- It will be decentralized like the internet, with no single entity owning it.
- It will allow users to socialize, learn, work and play in 3D virtual spaces in ways that go beyond current technologies.
- Components of metaverse technology already exist in online games, with Second Life often cited as an early example.
- Issues like user safety, addiction, and the potential for it to be used as an "escape" from reality will need to be addressed as the metaverse develops further.
This document discusses task-based programming models for distributed computing. It defines tasks as distinct units of code that can be executed remotely. Task computing provides distribution by harnessing multiple computing nodes, unlike multithreaded computing within a single machine. The document categorizes task computing into high-performance, high-throughput, and many-task computing. It also describes popular task computing frameworks like Aneka, Condor, Globus Toolkit, and describes developing applications using the Aneka task programming model.
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and free it for reuse when no longer needed. This is critical to any advanced computer system where more than a single process might be underway at any time
Histogram Processing
Histogram Equalization
Histogram Matching
Local Histogram processing
Using histogram statistics for image enhancement
Uses for Histogram Processing
Histogram Equalization
Histogram Matching
Local Histogram Processing
Basics of Spatial Filtering
Loaders are system software programs that perform the loading function of placing programs into memory for execution. The fundamental processes of loaders include allocation of memory space, linking of object programs, relocation to allow loading at different addresses, and loading the object program into memory. There are different types of loaders such as compile-and-go loaders, absolute loaders, and linking loaders. Compile-and-go loaders directly place assembled code into memory locations for execution, while absolute loaders place machine code onto cards to later load into memory. Linking loaders allow for multiple program segments and external references between segments through the use of symbol tables and relocation information.
This document discusses macros and macro processing. It defines macros as units of code abbreviation that are expanded during compilation. The macro processor performs two passes: pass 1 reads macros and stores them in a table, pass 2 expands macros by substituting actual parameters. Advanced features like conditional expansion and looping are enabled using statements like AIF, AGO, and ANOP. Nested macro calls follow a LIFO expansion order.
Description of all types of Loaders from System programming subjects.
eg. Compile-Go Loader
General Loader
Absolute Loader
Relocating Loader
Practical Relocating Loader
Linking Loader
Linker Vs. Loader
general relocatable loader
This document provides an overview of a system software course, including:
- The course will cover compilers, assemblers, linkers, loaders, macro processors, and file/process management under Windows.
- The objective is to gain a deep understanding of how computers work by examining the relationship between system software and machine architecture, and how system software aids in program development and execution.
- Key topics will include an introduction to system software, compilers, loaders, operating systems, and the programming process from coding to running a program.
Introduction, Macro Definition and Call, Macro Expansion, Nested Macro Calls, Advanced Macro Facilities, Design Of a Macro Preprocessor, Design of a Macro Assembler, Functions of a Macro Processor, Basic Tasks of a Macro Processor, Design Issues of Macro Processors, Features, Macro Processor Design Options, Two-Pass Macro Processors, One-Pass Macro Processors
The .NET Framework is a software platform that allows developers to write and run applications and web services in any compliant language. It provides a common language runtime and class libraries. Applications are compiled to an intermediate language (IL) that is then compiled to native machine code by the common language runtime (CLR). The CLR handles memory management, security, and other low-level tasks. The .NET Framework supports multiple programming languages and tools like Visual Studio. It allows building Windows forms applications, web applications with ASP.NET, and web services.
Software Requirement Specification is a most important topic asked in exams and for presentations in B.Tech comp. engg. This presentation contains all the important topic and deep knowledge of SRS.It includes definition, scope, role, how to write srs, template and template description. It tells how to build SRS and also includes examples for ease.
The document discusses loaders, which are system software programs that perform the loading function of placing a program into memory for execution. There are several types of loaders: compile-and-go loaders directly place assembled code into memory; absolute loaders place code at specified addresses; relocating loaders allow code to be loaded at different addresses and combine programs. Relocating loaders output object code, symbol tables, and relocation information to perform allocation, relocation, linking, and loading separately from assembly. Direct-linking loaders provide more flexibility by allowing multiple program and data segments with intersegment references.
Visual Basic is a programming language designed for building graphical user interface (GUI) applications. It uses a drag-and-drop interface building tool to create GUIs rather than writing code. Visual Basic supports features like database access, internet capabilities, and rapid application development tools that allow quick creation of full-featured applications. Visual Basic .NET was created as a completely new language to support Microsoft's .NET framework and allow easier development of web applications. It is fully object-oriented and supports the .NET runtime environment, web forms, and web services.
Software Engineering (Software Process: A Generic View)ShudipPal
This document provides an overview of software processes and engineering. It defines a software process as a series of predictable steps that lead to a timely, high-quality product. The document then discusses the generic process framework activities of communication, planning, modeling, construction, and deployment. It also covers umbrella activities like project management, reviews, and quality assurance that span the entire software process. Finally, it introduces the Capability Maturity Model Integration for assessing software processes and describes its five maturity levels from initial to optimized.
System programming involves designing and implementing system programs like operating systems, compilers, linkers, and loaders that allow user programs to run efficiently on a computer system. A key part of system programming is developing system software like operating systems, assemblers, compilers, and debuggers. An operating system acts as an interface between the user and computer hardware, managing processes, memory, devices, and files. Assemblers and compilers translate programs into machine-readable code. Loaders place object code into memory for execution. System programming optimizes computer system performance and resource utilization.
The document summarizes the key aspects of direct linking loaders. A direct linking loader allows for multiple procedure and data segments and flexible intersegment referencing. It provides assembler output with the length and symbol tables (USE and DEFINITION) to the loader. The loader performs two passes, building a Global External Symbol Table in Pass 1 and performing relocation and linking in Pass 2 using the object decks with External Symbol Dictionary, instructions/data, and relocation/linkage sections. This allows combining and executing object code from separate object programs.
This document discusses single pass assemblers. It notes that single pass assemblers scan a program once to create the equivalent binary, substituting symbolic instructions with machine code. However, this can cause forward reference problems when symbols are used before being defined. The document describes two solutions for single pass assemblers: 1) eliminating forward references by defining all labels before use or prohibiting forward data references, and 2) generating object code directly in memory without writing to disk, requiring reassembly each time.
One pass assembler, Two pass assembler,
Advanced Assembler Directives
Index
------
One-pass assembler
Forward Reference
Two-pass assembler using variant-I
Two-pass assembler using variant-II
Advanced Assembler Directives
Design of two pass assembler
The document discusses macro language and macro processors. It defines macros as single line abbreviations for blocks of code that allow programmers to avoid repetitively writing the same code. It describes key aspects of macro processors including macro definition, macro calls, macro expansion, macro arguments, and conditional macro expansion. Implementation of macro processors involves recognizing macro definitions, saving the definitions, recognizing macro calls, and replacing the calls with the corresponding macro body.
This document outlines a course on .NET programming with VB.NET. It introduces key .NET concepts like the Common Language Runtime (CLR) and assemblies. It describes how VB.NET code is compiled to MSIL and executed by the CLR. The course covers building classes and objects in VB.NET, object-oriented programming fundamentals, working with .NET framework classes, creating Windows and web forms applications, and data access with ADO.NET.
The document discusses the design of an assembler. It begins by outlining the general design procedure, which includes specifying the problem, defining data structures like symbol tables and opcode tables, specifying data formats, and specifying algorithms. It then discusses the specific design of an assembler, including stating the problem, defining data structures like symbol tables and opcode tables, specifying table formats, and looking for modularity. Finally, it provides an example assembly language program and discusses how the assembler would process it using the defined data structures and tables during its first and second passes.
This document discusses language processors and their fundamentals. It begins by explaining the semantic gap between how software is designed and implemented, and how language processors help bridge this gap. It then covers different types of language processors like translators, interpreters, and preprocessors. The key activities of language processors - analysis and synthesis - are explained. Analysis includes lexical, syntax and semantic analysis, while synthesis includes memory allocation and code generation. Language specifications using grammars and different binding times are also covered. Finally, common language processing development tools like LEX and YACC are introduced.
The document discusses computer architecture and describes the basic components of a computer. It discusses the instruction cycle which involves fetching instructions from memory, decoding them, reading the effective address from memory, and executing the instruction. The basic computer has three types of instructions - memory reference, register reference, and input/output. Memory reference instructions refer to memory addresses and use direct or indirect addressing. Register reference instructions perform operations on registers. Input/output instructions are used for communication with external devices. The instruction cycle is then completed by fetching and executing the next instruction.
Assembler is a kind of system software that translate mnemonic codes written in assembly language (which is, in turn, a low-level language) into its equivalent object code (which is, in turn, need to change into executable code by loader and linker)
Loaders are system software programs that perform the loading function of placing programs into memory for execution. The fundamental processes of loaders include allocation of memory space, linking of object programs, relocation to allow loading at different addresses, and loading the object program into memory. There are different types of loaders such as compile-and-go loaders, absolute loaders, and linking loaders. Compile-and-go loaders directly place assembled code into memory locations for execution, while absolute loaders place machine code onto cards to later load into memory. Linking loaders allow for multiple program segments and external references between segments through the use of symbol tables and relocation information.
This document discusses macros and macro processing. It defines macros as units of code abbreviation that are expanded during compilation. The macro processor performs two passes: pass 1 reads macros and stores them in a table, pass 2 expands macros by substituting actual parameters. Advanced features like conditional expansion and looping are enabled using statements like AIF, AGO, and ANOP. Nested macro calls follow a LIFO expansion order.
Description of all types of Loaders from System programming subjects.
eg. Compile-Go Loader
General Loader
Absolute Loader
Relocating Loader
Practical Relocating Loader
Linking Loader
Linker Vs. Loader
general relocatable loader
This document provides an overview of a system software course, including:
- The course will cover compilers, assemblers, linkers, loaders, macro processors, and file/process management under Windows.
- The objective is to gain a deep understanding of how computers work by examining the relationship between system software and machine architecture, and how system software aids in program development and execution.
- Key topics will include an introduction to system software, compilers, loaders, operating systems, and the programming process from coding to running a program.
Introduction, Macro Definition and Call, Macro Expansion, Nested Macro Calls, Advanced Macro Facilities, Design Of a Macro Preprocessor, Design of a Macro Assembler, Functions of a Macro Processor, Basic Tasks of a Macro Processor, Design Issues of Macro Processors, Features, Macro Processor Design Options, Two-Pass Macro Processors, One-Pass Macro Processors
The .NET Framework is a software platform that allows developers to write and run applications and web services in any compliant language. It provides a common language runtime and class libraries. Applications are compiled to an intermediate language (IL) that is then compiled to native machine code by the common language runtime (CLR). The CLR handles memory management, security, and other low-level tasks. The .NET Framework supports multiple programming languages and tools like Visual Studio. It allows building Windows forms applications, web applications with ASP.NET, and web services.
Software Requirement Specification is a most important topic asked in exams and for presentations in B.Tech comp. engg. This presentation contains all the important topic and deep knowledge of SRS.It includes definition, scope, role, how to write srs, template and template description. It tells how to build SRS and also includes examples for ease.
The document discusses loaders, which are system software programs that perform the loading function of placing a program into memory for execution. There are several types of loaders: compile-and-go loaders directly place assembled code into memory; absolute loaders place code at specified addresses; relocating loaders allow code to be loaded at different addresses and combine programs. Relocating loaders output object code, symbol tables, and relocation information to perform allocation, relocation, linking, and loading separately from assembly. Direct-linking loaders provide more flexibility by allowing multiple program and data segments with intersegment references.
Visual Basic is a programming language designed for building graphical user interface (GUI) applications. It uses a drag-and-drop interface building tool to create GUIs rather than writing code. Visual Basic supports features like database access, internet capabilities, and rapid application development tools that allow quick creation of full-featured applications. Visual Basic .NET was created as a completely new language to support Microsoft's .NET framework and allow easier development of web applications. It is fully object-oriented and supports the .NET runtime environment, web forms, and web services.
Software Engineering (Software Process: A Generic View)ShudipPal
This document provides an overview of software processes and engineering. It defines a software process as a series of predictable steps that lead to a timely, high-quality product. The document then discusses the generic process framework activities of communication, planning, modeling, construction, and deployment. It also covers umbrella activities like project management, reviews, and quality assurance that span the entire software process. Finally, it introduces the Capability Maturity Model Integration for assessing software processes and describes its five maturity levels from initial to optimized.
System programming involves designing and implementing system programs like operating systems, compilers, linkers, and loaders that allow user programs to run efficiently on a computer system. A key part of system programming is developing system software like operating systems, assemblers, compilers, and debuggers. An operating system acts as an interface between the user and computer hardware, managing processes, memory, devices, and files. Assemblers and compilers translate programs into machine-readable code. Loaders place object code into memory for execution. System programming optimizes computer system performance and resource utilization.
The document summarizes the key aspects of direct linking loaders. A direct linking loader allows for multiple procedure and data segments and flexible intersegment referencing. It provides assembler output with the length and symbol tables (USE and DEFINITION) to the loader. The loader performs two passes, building a Global External Symbol Table in Pass 1 and performing relocation and linking in Pass 2 using the object decks with External Symbol Dictionary, instructions/data, and relocation/linkage sections. This allows combining and executing object code from separate object programs.
This document discusses single pass assemblers. It notes that single pass assemblers scan a program once to create the equivalent binary, substituting symbolic instructions with machine code. However, this can cause forward reference problems when symbols are used before being defined. The document describes two solutions for single pass assemblers: 1) eliminating forward references by defining all labels before use or prohibiting forward data references, and 2) generating object code directly in memory without writing to disk, requiring reassembly each time.
One pass assembler, Two pass assembler,
Advanced Assembler Directives
Index
------
One-pass assembler
Forward Reference
Two-pass assembler using variant-I
Two-pass assembler using variant-II
Advanced Assembler Directives
Design of two pass assembler
The document discusses macro language and macro processors. It defines macros as single line abbreviations for blocks of code that allow programmers to avoid repetitively writing the same code. It describes key aspects of macro processors including macro definition, macro calls, macro expansion, macro arguments, and conditional macro expansion. Implementation of macro processors involves recognizing macro definitions, saving the definitions, recognizing macro calls, and replacing the calls with the corresponding macro body.
This document outlines a course on .NET programming with VB.NET. It introduces key .NET concepts like the Common Language Runtime (CLR) and assemblies. It describes how VB.NET code is compiled to MSIL and executed by the CLR. The course covers building classes and objects in VB.NET, object-oriented programming fundamentals, working with .NET framework classes, creating Windows and web forms applications, and data access with ADO.NET.
The document discusses the design of an assembler. It begins by outlining the general design procedure, which includes specifying the problem, defining data structures like symbol tables and opcode tables, specifying data formats, and specifying algorithms. It then discusses the specific design of an assembler, including stating the problem, defining data structures like symbol tables and opcode tables, specifying table formats, and looking for modularity. Finally, it provides an example assembly language program and discusses how the assembler would process it using the defined data structures and tables during its first and second passes.
This document discusses language processors and their fundamentals. It begins by explaining the semantic gap between how software is designed and implemented, and how language processors help bridge this gap. It then covers different types of language processors like translators, interpreters, and preprocessors. The key activities of language processors - analysis and synthesis - are explained. Analysis includes lexical, syntax and semantic analysis, while synthesis includes memory allocation and code generation. Language specifications using grammars and different binding times are also covered. Finally, common language processing development tools like LEX and YACC are introduced.
The document discusses computer architecture and describes the basic components of a computer. It discusses the instruction cycle which involves fetching instructions from memory, decoding them, reading the effective address from memory, and executing the instruction. The basic computer has three types of instructions - memory reference, register reference, and input/output. Memory reference instructions refer to memory addresses and use direct or indirect addressing. Register reference instructions perform operations on registers. Input/output instructions are used for communication with external devices. The instruction cycle is then completed by fetching and executing the next instruction.
Assembler is a kind of system software that translate mnemonic codes written in assembly language (which is, in turn, a low-level language) into its equivalent object code (which is, in turn, need to change into executable code by loader and linker)
This document outlines the topics covered in five units of a System Software course. Unit I introduces system software and the Simplified Instructional Computer (SIC) architecture, including memory organization, registers, data formats, instruction formats, and I/O. Unit II covers assemblers, their functions, algorithms, and examples. Unit III discusses loaders, linkers, and their algorithms and data structures. Unit IV describes macro processors and their features. Unit V provides an overview of text editors and debugging systems. The course aims to teach fundamental system programming concepts related to machine architecture, assemblers, loaders, linkers, macro processors, and other system software tools.
The document summarizes data types in various programming languages. It provides a table comparing integer type sizes and representations across languages including 8-bit, 16-bit, 32-bit, 64-bit types as well as arbitrary precision types. Additional notes provide context on type implementations for specific languages.
The document summarizes data types in various programming languages. It provides a table comparing integer type sizes and names across languages including 8-bit, 16-bit, 32-bit, 64-bit, arbitrary precision, signed and unsigned types. It also includes footnotes explaining implementation details and exceptions for certain languages.
1) Embedded systems are computing systems that perform dedicated functions. They contain a processor, memory, and input/output components on a single chip or board.
2) There are two main implementations of embedded systems - system on chip (SOC) and system board (SB). SOC is cheaper and uses less power, while SB is more costly but allows for higher performance.
3) Microcontrollers are a type of SOC that contain a CPU, memory, and input/output control on a single chip. They are dedicated to specific tasks and commonly interface with sensors, switches, LEDs and other components.
The document provides information about the ARM processor architecture. It discusses the key aspects of ARM including:
- ARM uses a load-store architecture with fixed-length 32-bit instructions and 3-address instruction formats.
- The main differences between RISC and CISC are that RISC executes one instruction per clock cycle while CISC takes multiple cycles per instruction.
- ARM development tools include a C compiler, assembler, linker, debugger and emulator to allow cross-development for ARM systems.
1. The ARM architecture was first developed by Acorn Computers in 1983 to use the RISC concept. It was based on designs from Berkeley and Stanford and optimized for embedded applications.
2. ARM uses a load-store architecture with 32-bit fixed-length instructions. It has enhanced RISC features like conditional execution and shift-and-ALU operations in a single cycle.
3. The ARM software development tools include a C compiler, assembler, linker, debugger and ARMulator emulator. These allow developing, building, loading and debugging ARM programs on hardware or via emulation.
Assemblers take assembly code written in symbolic mnemonics and convert it into machine-readable object code. They evaluate the operation field of each instruction to find the corresponding machine code value. Assemblers also generate location counter values and other information needed by the loader. Assembly programs contain labels, opcodes, operands, and comments. Assembler directives provide instructions to the assembler itself rather than generating machine codes. Common directives include START and END to specify the beginning and end of a program. VAX, Pentium Pro, and other architectures have different data formats, instruction formats, addressing modes, instruction sets, and I/O methods.
FLPU = Floating Points operations Unit
PFCU = Prefetch control unit
AOU = Atomic Operations Unit
Memory-Management unit (MMU)
MAR (memory address register)
MDR (memory data register)
BIU (Bus Interface Unit)
ARS (Application Register Set)
FRS File Register Set
(SRS) single register set
An advanced processor is a type of microprocessor that is designed to handle complex tasks and perform calculations at a high speed. These processors are typically used in high-performance computing applications, such as scientific research, artificial intelligence, and data analysis. They often have multiple cores and advanced instruction sets that allow them to process large amounts of data quickly and efficiently. Some examples of advanced processors include Intel's Core i9 and AMD's Ryzen Threadripper
This document provides an overview of the CSC204 module on computer architecture and assembly language. It covers the module description, assessment criteria, objectives, and content including computer components, the Von Neumann model, CPU organization, and functional units. The key topics are computer architecture, assembly language programming, computer organization, and how computers work at different levels of abstraction from the digital logic level to the user level.
System software includes operating systems and utilities that enable computer functions. Application software performs real work for users, like word processors and spreadsheets. There are several software development models including:
- Waterfall model which progresses in linear stages from requirements to implementation.
- V-shaped model emphasizes testing at each stage to validate the product.
- Prototyping model involves building prototypes, getting user feedback, and refining iteratively until the user is satisfied.
Exploring Substances:
Acidic, Basic, and
Neutral
Welcome to the fascinating world of acids and bases! Join siblings Ashwin and
Keerthi as they explore the colorful world of substances at their school's
National Science Day fair. Their adventure begins with a mysterious white paper
that reveals hidden messages when sprayed with a special liquid.
In this presentation, we'll discover how different substances can be classified as
acidic, basic, or neutral. We'll explore natural indicators like litmus, red rose
extract, and turmeric that help us identify these substances through color
changes. We'll also learn about neutralization reactions and their applications in
our daily lives.
by sandeep swamy
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsesushreesangita003
what is pulse ?
Purpose
physiology and Regulation of pulse
Characteristics of pulse
factors affecting pulse
Sites of pulse
Alteration of pulse
for BSC Nursing 1st semester
for Gnm Nursing 1st year
Students .
vitalsign
How to track Cost and Revenue using Analytic Accounts in odoo Accounting, App...Celine George
Analytic accounts are used to track and manage financial transactions related to specific projects, departments, or business units. They provide detailed insights into costs and revenues at a granular level, independent of the main accounting system. This helps to better understand profitability, performance, and resource allocation, making it easier to make informed financial decisions and strategic planning.
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schoolsdogden2
Algebra 1 is often described as a “gateway” class, a pivotal moment that can shape the rest of a student’s K–12 education. Early access is key: successfully completing Algebra 1 in middle school allows students to complete advanced math and science coursework in high school, which research shows lead to higher wages and lower rates of unemployment in adulthood.
Learn how The Atlanta Public Schools is using their data to create a more equitable enrollment in middle school Algebra classes.
Ultimate VMware 2V0-11.25 Exam Dumps for Exam SuccessMark Soia
Boost your chances of passing the 2V0-11.25 exam with CertsExpert reliable exam dumps. Prepare effectively and ace the VMware certification on your first try
Quality dumps. Trusted results. — Visit CertsExpert Now: https://www.certsexpert.com/2V0-11.25-pdf-questions.html
Geography Sem II Unit 1C Correlation of Geography with other school subjectsProfDrShaikhImran
The correlation of school subjects refers to the interconnectedness and mutual reinforcement between different academic disciplines. This concept highlights how knowledge and skills in one subject can support, enhance, or overlap with learning in another. Recognizing these correlations helps in creating a more holistic and meaningful educational experience.
As of Mid to April Ending, I am building a new Reiki-Yoga Series. No worries, they are free workshops. So far, I have 3 presentations so its a gradual process. If interested visit: https://www.slideshare.net/YogaPrincess
https://ldmchapels.weebly.com
Blessings and Happy Spring. We are hitting Mid Season.
The ever evoilving world of science /7th class science curiosity /samyans aca...Sandeep Swamy
The Ever-Evolving World of
Science
Welcome to Grade 7 Science4not just a textbook with facts, but an invitation to
question, experiment, and explore the beautiful world we live in. From tiny cells
inside a leaf to the movement of celestial bodies, from household materials to
underground water flows, this journey will challenge your thinking and expand
your knowledge.
Notice something special about this book? The page numbers follow the playful
flight of a butterfly and a soaring paper plane! Just as these objects take flight,
learning soars when curiosity leads the way. Simple observations, like paper
planes, have inspired scientific explorations throughout history.
2. History of Computer Programming
• It is probably fair to say that the first program-controlled (mechanical)
computer ever build was the Z1 (1938).
• This was followed in 1939 by the Z2 as the first operational program
controlled computer with fixed-point arithmetic.
3. Overview[1]
• In the beginning, all programming could be considered “Systems
programming”
• With the advent of increasingly powerful machines and ever more
featureful runtime environments, programming languages moved away
from systems programming to application programming
Computer Components Hierarchy
4. Overview[2]
• The technological advances witnessed in the computer industry
are the result of a long chain of immense and successful efforts
made by two major force:
• The academia, represented by university research centers, and
• The industry, represented by computer companies.
5. Overview[3]
• Systems Programming is a practice of writing “system software” and it is at the
heart of all software that we write
• It provides service for other software (e.g. kernels, libraries, daemons)
• Typically resource (memory or CPU) constrained
• Used to build abstraction for application programmers
6. Overview[4]
• Examples of System Software
• Compiler (people like language into machine language translator)
• Loader(Prepare machine language for Execution)
• Micro processor(Allows abbreviation usage)
• Operating Systems and File System (Flexible information storage and retrieval)
• Device Drivers
• Middleware
• Utility Software
• Shells and Windowing Systems
7. Overview[5]
• System Software consists of programs that supports the operation of a
computer.
• This software makes its possible for the user to focus on an application
without needing to know the detail of how the machine works internally.
Foundations of Systems Programming
8. Overview[6]
System Software Application Software
Used for operating computer hardware Used by user to perform specific task
Installed on the computer when operating system is installed. Installed according to user’s requirements
The user does not interact with system software because it works in
the background
The user interacts with application software.
Run independently Can’t run without the presence of system software
Example: (compiler, assembler, debugger, driver, etc) Example: (word processor, web browser, media player, etc.)
9. Overview[7]
• Evolution of the Components of a programming System
1. Assemblers ( Source program Object program)
2. Loaders (Place object program in memory in an executable format)
3. Macros (allows programmers to use abbreviations)
4. Compilers
5. Formal Systems
10. Overview[8]
• System Software Requirements
• Space/time economy
• Access to all relevant hardware features
• Object code must not depend upon elaborate run-time support
11. Overview[9]
• Characteristics of Systems Programming
• Programmers are expected to know hardware and internal behavior of the computer
system on which the program will run
• Use low level programming languages or some programming dialects
• Requires little run time overheads and can execute in a resource constrained
environment
• Small or no runtime libraries requirements
• Have access to system resource, including memory
12. Overview[10]
• Systems Programming Limiting Factors
• No debugging mode running support
• Limited programming facilities
• Less runtime libraries
• Less error checking capabilities
13. Machine Architecture[1]
• The system software like assembler, linker and loader are all dependent on
machine architecture
• One characteristic in which most system software differ from application
software is machine dependency:
• Assembler translate mnemonic instructions into machine code
• Compilers must generate machine language code
14. Machine Architecture[2]
• System Software usually related to the architecture of the machine on which they are to
run
• Some aspects of system software that do not directly depend upon the type of computing
system (General design and logic of an assembler and compiler)
• A different definition of computer architecture is built on four basic viewpoints:
• Structure (interconnection of various hardware components)
• Organization (dynamic interplay and management of the various components)
• Implementation (design of hardware components), and
• Performance (specifies the behavior of the computer system).
15. Machine Architecture[3]
• Architecture Feature Descriptor:
• System Memory (used to store programs and data)
• Registers
• Instruction Formats
• Data Formats
• Addressing Mode
• Instruction Set
• Input/Output
16. Machine Architecture[4]
• Execution Life Cycle:
1. The next instruction to be executed, whose address is obtained from the PC, is
fetched from the memory and stored in the IR.
2. The instruction is decoded.
3. Operands are fetched from the memory and stored in CPU registers, if needed.
4. The instruction is executed.
5. Results are transferred from CPU registers to the memory, if needed.
17. Simplified Instructional Computer
• SIC is a hypothetical computer system architecture designed for
teaching computer systems programming
• This machine has been designed to illustrate the most commonly
encountered hardware features and concepts, while avoiding most of the
idiosyncrasies that are often found in real machines.
• Two versions of SIC:
• SIC - standard model
• SIC/XE (extra equipment or extra expensive)
18. SIC Memory
• Memory storage in SIC consists of 8-bit bytes, and all memory addresses in SIC
are byte addresses.
• Any 3 consecutive bytes form a word (24 bits)
• All addresses in SIC are byte address.
• Words are addressed by the location of their lowest numbered byte.
• Total of 215 (32,768) bytes of total memory
• Least significant part of a numeric value is stored at the lowest numbered address
19. SIC Registers
• Note: the numbering scheme is chosen for compatibility with XE version of SIC
Register Number Function Use
A 0 Accumulator Arithmetic operations
X 1 Index register Addressing
L 2 Linkage register Storing return address for subroutine jump instruction
(JSUB)
PC 8 Program counter Contains Address of next instruction to be fetched for
execution
SW 9 Status word Flags, other information including Condition Code (CC)
20. SIC Data Formats
• Integers: stored as 24-bit binary numbers
• 2’s complement representation for negative values
• No floating point hardware in standard SIC
• Characters: 8-bit ASCII
21. SIC Instruction Formats
• 24-bit format
• The flag bit x indicates indexed-addressing mode
8 bit opcode 1 bit addressing mode 15 bit address
22. SIC Addressing Modes
• 2 addressing modes available
• Indicated by setting of x bit in the instruction
• The table describes how the target address is calculated from the address given in the
instruction
• (x): represents the contents of register x
Mode Indication Target address calculation
Direct x = 0 TA = address
Indexed x = 1 TA = address + (x)
23. SIC Instruction Set[1]
• Load and store registers: LDA, LDX, STA, STX, etc.
• Integer arithmetic operations: ADD, SUB, MUL, DIV, etc.
• All arithmetic operations involve register A and a word in memory, with the result being left
in the register
• Comparison: COMP
• COMP compares the value in register A with a word in memory, this instruction sets a
condition code CC to indicate the result
24. SIC Instruction Set[2]
• Conditional jump instructions: JLT, JEQ, JGT
• these instructions test the setting of CC and jump accordingly
• Subroutine linkage: JSUB, RSUB
• JSUB jumps to the subroutine, placing the return address in register L
• RSUB returns by jumping to the address contained in register L
25. SIC Input and Output
• Input and output are performed by transferring 1 byte at a time to or from the rightmost 8 bits of
register A.
• Each devices are assigned unique 8 bit code
• Test Device (TD) instruction tests whether the addressed device is ready to send or receive a byte of
data
• The condition code is set to indicate the result of the test
• “Less Than,< “ if device is ready; “Equal, =” if device is busy.
• Read Data (RD): read a byte from the device to register A
• Write Data (WD): write a byte from register A to the device
26. SIC Programming Example[1]
• Data movement
LDA FIVE load 5 into A
STA ALPHA store in ALPHA
LDCH CHARZ load ‘Z’ into A
STCH C1 store in C1
.
.
.
ALPHA RESW 1 reserve one word space
FIVE WORD 5 one word holding 5
CHARZ BYTE C’Z’ one-byte constant
C1 RESB 1 one-byte variable
27. SIC Programming Example[2]
• Arithmetic operations: BETA = ALPHA+INCR-1
LDA ALPHA
ADD INCR
SUB ONE
STA BETA
LDA GAMMA
ADD INCR
SUB ONE
STA DELTA
...
ONE WORD 1 one-word constant
ALPHA RESW 1 one-word variables
BETA RESW 1
GAMMA RESW 1
DELTA RESW 1
INCR RESW 1
28. SIC Programming Example[3]
• Looping and indexing: copy one string to another
LDX ZERO initialize index register to 0
MOVECH LDCH STR1,X load char from STR1 to reg A
STCH STR2,X
TIX ELEVEN add 1 to index, compare to 11
JLT MOVECH loop if “less than”
.
.
.
STR1 BYTE C’TEST STRING’
STR2 RESB 11
ZERO WORD 0
ELEVEN WORD 11
29. SIC Programming Example[4]
LDA ZERO initialize index value to 0
STA INDEX
ADDLP LDX INDEX load index value to reg X
LDA ALPHA,X load word from ALPHA into reg A
ADD BETA,X
STA GAMMA,X store the result in a word in GAMMA
LDA INDEX
ADD THREE add 3 to index value
STA INDEX
COMP K300 compare new index value to 300
JLT ADDLP loop if less than 300
...
...
INDEX RESW 1
ALPHA RESW 100 array variables—100 words each
BETA RESW 100
GAMMA RESW 100
ZERO WORD 0 one-word constants
THREE WORD 3
K300 WORD 300
30. SIC Programming Example[5]
• Input and output
INLOOP TD INDEV test input device
JEQ INLOOP loop until device is ready
RD INDEV read one byte into register A
STCH DATA
.
.
OUTLP TD OUTDEV test output device
JEQ OUTLP loop until device is ready
LDCH DATA
WD OUTDEV write one byte to output device
.
.
INDEV BYTE X’F1’ input device number
OUTDEV BYTE X’05’ output device number
DATA RESB 1
31. SIC/XE Memory
• Larger Memory
• 220 bytes (1 megabyte) in memory
• Leads to change in instruction formats & addressing modes
32. SIC/XE Registers
• 3 additional registers, 24 bits in length
• 1 additional register, 48 bits in length
Mnemonic Number Use
B 3 Base register – used for addressing
S 4 General working register – no special use
T 5 General working register – no special use
F 6 Floating point accumulator (48 bits)
33. SIC/XE Data Formats
• Similar data format as the standard SIC.
• In addition, there is 48 bit Floating-point data type represented with the following format.
• The absolute value of number represented as:
• frac*2(exp-1024)
• fraction: 0~1
• exponent: 0~2047
• Sign is indicated by ‘s’ (0 = +ve, 1 = -ve)
s Exponent fraction
1 11 36
34. SIC/XE Instruction formats[1]
• The larger memory on SIC/XE mean an address will no
longer fit into 15 bit field.
• Two possible options:
• Use some from of relative addressing
• Or extended the address field to 20 bit
• Both options are included in SIC/XE(format 3(e=0) and format
4(e=1))
35. SIC/XE Instruction formats[2]
• SIC/XE also provides some instructions that do not refer memory at all
• Formats 1 and 2 are instructions that do not reference memory at all
36. SIC/XE Addressing Mode[1]
● Addressing modes
• Base relative/b (n=1, i=1, b=1, p=0)
• Program-counter relative/p (n=1, i=1, b=0, p=1)
• Direct/ (n=1, i=1, b=0, p=0)
• Immediate (n=0, i=1, x=0)
• Indirect (n=1, i=0, x=0)
• Indexing (both n & i = 0 or 1, x=1)
• Extended (e=1)
● Note: Indexing cannot be used with immediate or indirect addressing
37. SIC/XE Addressing Mode[2]
n i x B p e
opcode 1 1 1 0 disp
Base Relative Addressing Mode
n=1, i=1, b=1, p=0 TA=(B)+disp (0disp 4095)
Program-Counter Relative Addressing Mode
n i x b p e
opcode 1 1 0 1 disp
n=1, i=1, b=0, p=1 TA=(PC)+disp (-2048disp 2047)
38. SIC/XE Addressing Mode[3]
n i x b p e
opcode 1 1 0 0 disp
• Direct Addressing Mode
n=1, i=1, b=0, p=0 TA=disp (0disp 4095)
n i x b p e
opcode 1 1 1 0 0 disp
n=1, i=1, b=0, p=0 TA=(X)+disp
(with index addressing mode)
39. SIC/XE Addressing Mode[4]
n i x b p e
opcode 0 1 0 disp
Immediate Addressing Mode
n=0, i=1, x=0 TA = disp
Indirect Addressing Mode
n i x b p e
opcode 1 0 0 disp
n=1, i=0, x=0 TA=(disp)
40. SIC/XE Addressing Mode[5]
n i x b p e
opcode 0 0 disp
Simple Addressing Mode
i=0, n=0 TA=b/p/e/disp (SIC standard)
n i x b p e
opcode 1 1 disp
i=1, n=1 TA=disp (SIC/XE standard)
41. SIC/XE Instruction Set
• New registers: LDB, STB, etc.
• Floating-point arithmetic: ADDF, SUBF, MULF, DIVF
• Register move: RMO
• Register-register arithmetic: ADDR, SUBR, MULR, DIVR
• Supervisor call: SVC
• Generates an interrupt for OS
42. SIC/XE Input/Output
• 1 byte at a time, TD, RD, and WD
• SIO, TIO, HIO:
• start, test, halt the operation of I/O device
43. SIC/XE Programming Example[1]
LDA #5
STA ALPHA
LDCH #90
STCH C1
.
.
.
ALPHA RESW 1
C1 RESB 1
LDA FIVE
STA ALPHA
LDCH CHARZ
STCH C1
.
.
.
ALPHA RESW 1
FIVE WORD 5
CHARZ BYTE C’Z’
C1 RESB 1
SIC version SIC/XE version
45. SIC/XE Programming Example[4]
• Looping and indexing: copy one string to another
LDT #11 initialize register T to 11
LDX #0 initialize index register to 0
MOVECH LDCH STR1,X load char from STR1 to reg A
STCH STR2,X store char into STR2
TIXR T add 1 to index, compare to 11
JLT MOVECH loop if “less than” 11
.
.
.
STR1 BYTE C’TEST STRING’
STR2 RESB 11
46. SIC/XE Programming Example[5]
LDS #3
LDT #300
LDX #0
ADDLP LDA ALPHA,X load from ALPHA to reg A
ADD BETA,X
STA GAMMA,X store in a word in GAMMA
ADDR S,X add 3 to index value
COMPR X,T compare to 300
JLT ADDLP loop if less than 300
...
...
ALPHA RESW 100 array variables—100 words each
BETA RESW 100
GAMMA RESW 100
48. Traditional (CISC) Machines
• Complex Instruction Set Computers (CISC)
• complicated instruction set
• different instruction formats and lengths
• many different addressing modes
• e.g. VAX or PDP-11 from DEC
• e.g. Intel x86 family
• Reduced Instruction Set Computer (RISC)
48
50. RISC Machines[1]
• Instruction
• standard, fixed instruction format
• single-cycle execution of most instructions
• memory access is available only for load and store instruction
• other instructions are register-to-register operations
• a small number of machine instructions, and instruction format
51. RISC Machines[2]
• Large number of general-purpose registers
• Small number of addressing modes
• Three RISC machines
• SPARC family
• PowerPC family
• Cray T3E
52. Systems Programming Languages
• In modern programming languages, there exists a distinct lack of languages targeted at
systems programming.
• Most modern languages are designed for application development which is most certainly
valid in the modern world. However, systems programming has been left behind in language
development.
• As such, systems programs do not benefit from the modern developments in language
design.
• Examples of System Programming Languages
• C/C++, D, Go, Rust
53. Systems Programming Languages
Choosing Criteria
• Systems programming is typically very resource constrained and it is often
appropriate to have something machine friendly at the expense of potentially
being somewhat programmer unfriendly.
• Safety
• Control
54. Benefit of RUST
• It exposes all the low level details that are required to have absolute control
over your memory layout.
• It has all the facilities you expect in a modern language.
• Rust has something they call the borrow checker, which statically (checked
compile time) eliminates a whole range of issues plaguing C/C++.
• It has a real concurrency story.
#57: As a future work 8086 Microprocessor can be replaced byeither 8051 Microcontroller which in turn have its ownapplication in embedded systems or any other moreadvanced processors.