Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CDG

Download as pdf or txt
Download as pdf or txt
You are on page 1of 100

UNIT –I- INTRODUCTION

SYSTEM SOFTWARE

 System software consists of variety of programs that supports the operations of a


computer. This makes it possible for the user to focus on an application or other problem
to be solved ,without needing to know the details of how the machine works internally.

 Examples of system software are text-editors,compilers,loaders or


linkers,debuggers,assemblers,and operating systems.

 An application program is primarily concerned with the solution to some problem,using


computer as a tool. The focus is on the application,not on the application system.

 System programs, on the other hand,are intended to support the operation and use of the
computer itself,rather than any particular application.

 Text editor - create and modify the program

 Compiler- translate programs into machine language

 Loader or linker - load machine language program into memory and prepared for
execution

 Debugger - help detect errors in the program

 When you wrote programs in assembler language

 Assembler - translate assembly program into machine language

 Macro processor - translate macros instructions into its definition

 When you control all of these processes

Machine structures used in the design of system software

 Memory structure

 Registers

 Data formats

 Instruction formats

 Addressing modes

 Instruction set
SIC

 SIC refers to Simplified Instruction Computer which is a hypothetical computer that has
been designed to include the hardware features most often found on real machines,while
avoiding unusual and irrelevant complexities. This allows to clearly separate the central
concepts of a system software from the implementation details associated with a
particular machine.

 Memory

 215 bytes in the computer memory

 3 consecutive bytes form a word

 8-bit bytes

 Registers

Mnemonic Number Special use

Accumulator; used for


A 0 arithmetic operations

Index register; used for


X 1 addressing

L 2 Linkage register; JSUB

PC 8 Program counter

SW 9 Status word, including CC

 Data Formats

 Integers are stored as 24-bit binary numbers; 2‟s complement representation is


used for negative values

 No floating-point hardware

 Instruction Formats

 opcode (8)
 address (15)

 X(1)

Addressing Modes

Mode Indication Target address calculation

Direct x=0 TA=address

Indexed x=1 TA=address+(X)

INSTRUCTION SET

 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

 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

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

 The Test Device (TD) instruction tests whether the addressed device is ready to
send or receive a byte of data

 Read Data (RD)

 Write Data (WD)


SIC/XE Machine Architecture

 Memory

 2^20 bytes in the computer memory

 3 consecutive bytes form a word

 8-bit bytes

 Data Formats

 Integers are stored as 24-bit binary numbers; 2‟s complement representation is


used for negative values

 No floating-point hardware

REGISTERS

Mnemonic Number Special use

Mnemonic Number Special use

B 3 Base register; used for addre

S 4 General working register

T 5 General working register

 Data Formats

 Floating-point data type: frac*2(exp-1024)

 frac: 0~1

 exp: 0~2047

 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 which generates an interrupt for OS

 Input/Output

 SIO, TIO, HIO: start, test, halt the operation of I/O device

 Instruction Formats

 Larger memory means an address cannot fit into a 15-bit field

 Extend addressing capacity

 Use some form of relative addressing -> instruction

 format 3

 Extend the address field to 20 bits -> instruction format 4

 Additional instructions do not reference memory

 Instruction format 1 & 2

Mode Indication Target address calculation operand

TA=(B)+disp
Base relative b=1, p=0 (0<=disp<=4095) (TA)

TA=(PC)+disp (-
PC-relative b=0, p=1 2048<=disp<=2047) (TA)

TA=disp (format 3) or address


Direct b=0, p=0 (format 4) (TA)

Indexed x=1 TA=TA+(X) (TA)

Mode Indication operand value


immediate addressing i=1, n=0 TA

indirect addressing i=0, n=1 ((TA))

simple addressing i=0, n=0 SIC instruction (all end

i=1, n=1 SIC/XE instruction

ADDRESSING MODES

 Base relative (n=1, i=1, b=1, p=0)

 Program-counter relative (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 for format 4, e=0 for format 3)

INSTRUCTION SET

 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 -which generates an interrupt for OS

INPUT/OUTPUT

• SIO, TIO, HIO:

• start, test, halt the operation of I/O device

TWO MARKS WITH ANSWERS

1.Define System Software.


System software consists of variety of program that support the operation of a

computer. This software makes it possible for the user to focus on an application of other
problem to be solved, without needing to know the details of how the machine works
internally.

2.Illustrate how input and output operations are performed in SIC.

Input and output are performed by transferring 1 byte at a time to or from the

rightmost 8 bits of register A. Each device is assigned a unique 8-bit code.

3.Define indirect addressing mode.

If bit i = 0 and n = 1, the word at the location given by the target address is

fetched, the value contained in this word is taken as the address of

the operand value. This is called indirect addressing.

4.Following is a memory configuration :

Address Value Register R

1 5 5

7 6 3

7 4

What is the result of the following statement?

Add 6 (immediate) to R (indirect).

10

5.What is the use of SVC instruction in SIC?

SVC is a supervisor call instruction. Executing this instruction generates an

interrupt that can be used for communication with the operating system.

6.What are the additional registers provided in SIC / XE than SIC?

Following additional registers are provided by SIC / XE.

B,S,T,F

7.In SIC / XE, what is the difference between simple addressing and immediate addressing?
In simple addressing, the instruction gives the address of the operand.

With immediate addressing, the instruction contains the operand itself.

8.Mention one advantage and one disadvantage of using program blocks in SIC / XE
assembly language programs.

Advantage :

Program blocks can reduce the sizes of a program since some 4-byte instructions may be
shortened to 3-bytes.

Disadvantage :

Additional overhead on the assembler.

9.Give one advantage and one disadvantage of symbolic links.

Advantage :

Symbolic links can go across file systems.

Disadvantage :

File access through symbolic links is slower.

10.When addressing programs written using the assembly language of SIC / XE, the
assembler may need to use PC – relative mode even when the BASE directive is in effect.
Why?

PC – relative mode is needed when the displacement is negative.

11.List and explain the examples of Systems Programming.

Text editor : create / modify a program in a high level language.

Compiler : translate it to machine code.

Loader / linker : load resulting code into memory and prepare for execution.

Debugger : detect errors in program.

12.Write a program for SIC machine to copy 11 byte string from one location to another.

LDX ZERO Initially x to zero

MOVECH LDCH STR1, X X specifying indexing

STCH STR2, X Increments X and compares with 11


TIX ELEVEN

JLT MOVECH

STR1 BYTE C „TEST STRING‟

String constant

STR2 RESB 11

ZERO WORD 0

ELEVEN WORD 11

13.How is a floating point value represented using exponent in SIC?

There is a floating point hardware on the standard version of SIC.

But in SIC /XE, the exponent is interpreted as an unsigned binary number between 0 and
2047. If the exponent has the value e and fraction has value f, the absolute value of the
number represented is f * 2 (e – 1024)

14.What is the purpose of test device instruction?

The 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 this test.

15.How I/O channels are used to perform input and output operations.

I/O channels can be used to perform input and output while the CPU is executing other
instructions. This allows overlap of computing and I/O, resulting in more efficient system
operation. The instruction SIO, TIO and HIO are used to start, test and halt the operation of
I/O channels.

16.Define a subroutine.

A subroutine is a section of the program that is written once, and can be used many times by
simply calling it from any point in the program.

PART – B

1.Explain the various generations of languages of computers with examples.


2.Explain the various types of addressing modes in hypothetical computers.

3.Explain a hypothetical computer model with neat diagram.

(OR)

Explain the architecture of SIC machine with suitable examples.

4.Explain the architecture SIC/XE machine in detail.

5.Explain SIC programming with suitable examples.

6.Explain SIC/XE programming with suitable examples.

7.Explain the differences between CISC & RISC machines.

8.Explain any two traditional machine architectures in detail.


UNIT II –ASSEMBLERS

ASSEMBLER

An assembler is a program that accepts an assembly language program as input and produces its
machine language equivalent along with information for the loader

(An Assembler translates a program written in an assembly language to it machine language


equivalent)

Label field.

 The label is a symbolic name that represents the memory address of an executable
statement or a variable.

Opcode/directive fields.

 The opcode (e.g. operation code) specifies the symbolic name for a machine
instruction.

 The directive specifies commands to the assembler about the way to assemble the
program.

Operand field.

 The operand specifies the data that is needed by a statement.

Comment field.

 The comment provides clear explanation for a statement.

Functions of a Basic Assembler

 Convert mnemonic operation codes to their machine language equivalents

E.g. STL -> 14 (line 10)

 Convert symbolic operands to their equivalent machine addresses

E.g. RETADR -> 1033 (line 10)

 Build the machine instructions in the proper format

 Convert the data constants to internal machine representations


E.g. EOF -> 454F46 (line 80)

 Write the object program and the assembly listing

The SIC assembler directives

START

 Specification of the name and start address of the program.

END

 Indication of the end of the program and optionally the address of the first
executable instruction.

BYTE

 Declaration of character or string constants.

WORD

 Declaration of integer constants.

RESB

 Declaration of character variables or arrays.

RESW

 Declaration of integer variables or arrays.

Functions of Two Pass Assembler

Pass 1 - define symbols (assign addresses)

 Assign addresses to all statements in the program

 Save the values assigned to all labels for use in Pass 2

 Process some assembler directives

Pass 2 - assemble instructions and generate object program

 Assemble instructions

 Generate data values defined by BYTE, WORD, etc.


 Process the assembler directives not done in Pass 1

 Write the object program and the assembly listing

Format of the Object Program generated by the Assembler

 Contains 3 types of records:

Header record:

 Col. 1 H

 Col. 2-7 Program name

 Col. 8-13 Starting address (hex)

 Col. 14-19 Length of object program in bytes (hex)

Text record

 Col.1 T

 Col.2-7 Starting address in this record (hex)

 Col. 8-9 Length of object code in this record in bytes (hex)

 Col. 10-69 Object code (hex) (2 columns per byte)

End record

 Col.1 E

 Col.2~7 Address of first executable instruction (hex)

 (END program_name)

PASS1 ALGORITHM
PASS 2 ALGORITHM
FEATURES OF A SYMBOL TABLE.

SYMTAB (symbol table)

• Content

Label name and its value (address)

May also include flag (type, length) etc.

• Usage

Pass 1: labels are entered into SYMTAB with their address (from

LOCCTR) as they are encountered in the source program

Pass 2: symbols used as operands are looked up in SYMTAB to

obtain the address to be inserted in the assembled instruction


• Characteristic

Dynamic table (insert, delete, search)

• Implementation

Hash table for efficiency of insertion and retrieval

Machine-dependent features of assemblers


Features of the SIC/XE machine Programming features.

1) # symbol.

a. Indication of the immediate addressing mode.

b. Immediate addressing provides a faster access to an operand


reference.

2) @ symbol.

a. Indication of the indirect addressing mode.

b. Indirect addressing reduces the number of instructions.

3) + symbol.

a. Explicit selection of the format 4 instruction with a direct addressing


mode.

b. Format 4 is selected when the 12-bit displacement of format 3 is too


small.

4) BASE directive.

a. Indication that the base register B holds a base address used in a base
addressing.

b. NOBASE directive disables the base register.

c. LDB instruction loads the base register with a base address.

5) Register-to-register addressing.

a. Register addressing reduces the size of a machine instruction and


speeds up a computation

Assembling features.
1) Multiprogramming.

a. Larger memory allows us to load many programs.

b. The object code is relative to zero because the load address is variable.

c. Program must be relocated when it is loaded in memory.

2) Register set mapping.

a. A separate register table can store the numeric values of the registers.

b. The numeric values of the registers can be preloaded with the symbol
table.

3) Relative (PC and base) addressing mode.

a. Operand value is subtracted from PC or base register value.

b. PC relative addressing provides a displacement from –2048 to +2047.

c. Base relative addressing provides a displacement from 0 to 4095.

Program relocation

• Principles.

 The load address of an object program is unknown at assembly time if the system
implements the multiprogramming feature.

 The assembler generates addresses relative to zero in the object program.

 At load time, relocation is performed by adding the load address to the relative
addresses.

 Operands of instructions that use direct addressing must be relocated, and the
assembler provides the relocation information in the object program.

 Operands of instructions that use relative addressing do not need to be relocated.

 Relocation can be processed by the loader or by the CPU using relocation


registers.

Program Relocation

 The larger main memory of SIC/XE


 Several programs can be loaded and run at the same time.
 This kind of sharing of the machine between programs is called multiprogramming
 To take full advantage
 Load programs into memory wherever there is room
 Not specifying a fixed address at assembly time Called program relocation
Program Blocks

• Refer to segments of code that are rearranged within a single object program unit

• USE [blockname]

• At the beginning, statements are assumed to be part of the unnamed (default) block

• If no USE statements are included, the entire program belongs to this single block

• Each program block may actually contain several separate segments of the source
program

Program Blocks - Implementation

Pass 1

Each program block has a separate location counter

Each label is assigned an address that is relative to the start of the block that contains it

At the end of Pass 1, the latest value of the location counter for each block indicates the length of
that block

The assembler can then assign to each block a starting address in the object program

Pass 2

The address of each symbol can be computed by adding the assigned block starting address and
the relative address of the symbol to that block

PROGRAM WITH MULTIPLE BLOCKS


• One-pass assemblers are used when

 it is necessary or desirable to avoid a second pass over the source program

 the external storage for the intermediate file between two passes is slow or is
inconvenient to use

• Main problem: forward references to both data and instructions

• One simple way to eliminate this problem: require that all areas be defined before they
are referenced.

 It is possible, although inconvenient, to do so for data items.

 Forward jump to instruction items cannot be easily eliminated.

Sample Program for a One-Pass Assembler


Load-and-Go Assembler

Load-and-go assembler generates their object code in memory for immediate execution.

No object program is written out, no loader is needed.

It is useful in a system oriented toward program development and testing such that the efficiency
of the assembly process is an important consideration.

How to Handle Forward References

Load-and-go assembler

Omits the operand address if the symbol has not yet been defined

Enters this undefined symbol into SYMTAB and indicates that it is undefined

Adds the address of this operand address to a list of forward references associated with the
SYMTAB entry

Scans the reference list and inserts the address when the definition for the symbol is encountered.

Reports the error if there are still SYMTAB entries indicated undefined symbols at the end of the
program

Search SYMTAB for the symbol named in the END statement and jumps to this location to
begin execution if there is no error
OBJECT CODE IN MEMORY AND SYMTAB
MULTI-PASS ASSEMBLERS

Prohibiting forward references in symbol definition:

 This restriction is not a serious inconvenience.


 Forward references tend to create difficulty for a person reading the program.
 Allowing forward references
 To provide more flexibility
Solution:

A multi-pass assembler that can make as many passes as are needed to process the definitions of
symbols.

Only the portions of the program that involve forward references in symbol definition are saved
for multi-pass reading.

For a two pass assembler, forward references in symbol definition are not allowed:

ALPHA EQU BETA

BETA EQU DELTA

DELTA RESW 1
Reason: symbol definition must be completed in pass 1.

Motivation for using a multi-pass assembler

DELTA can be defined in pass 1

BETA can be defined in pass 2

ALPHA can be defined in pass 3

Implementation

A symbol table is used

 to store symbol definitions that involve forward references


 to indicate which symbols are dependant on the values of others
 to facilitate symbol evaluation
For a forward reference in symbol definition, we store in the SYMTAB:

the symbol name


the defining expression
the number of undefined symbols in the defining expression
the undefined symbol (marked with a flag *) associated with a list of symbols depend on
this undefined symbol.
 When a symbol is defined, we can recursively evaluate the symbol expressions
depending on the newly defined symbol.
FORWARD REFERENCE EXAMPLE
TWO MARKS WITH ANSWERS
1.Define Assembler directives.
Assembler directive instruct the assembler to perform certain action during the translation of
source program into object program. Ex: START, RESW, WORD, END

2.How assembler handle forward reference instructions.


All such areas be defined in the source program before they are referenced.User merely places all
storage reservation statements at the start of the program rather than at the end.

3.How is literal table useful?


It is convenient for the programmer to be able to write the value of a constant operand as a part
of the instruction that uses it. This avoids having to define the constant elsewhere in the program
and make up a label for it.

4.What does an assembler perform when it encounters LTORG assembler directive?


When the assembler encounters a LTORG statements, it creates a literal pool that contains all of
the literal operands used since the previous LTORG. This literal pool is placed in the object
program at the location where the LTORG directive was encountered.

5.What are the functions performed in pass 1 and pass 2 of a two assembler?
Pass 1
1.Assign addresses to all statements in the program.
2.Save the values assigned to all labels for use in pass 2.
3.Perform some processing of assembler directives.
Pass 2
1.Assemble instructions.
2.Generate data values defined by BYTE, WORD etc.
3.Perform processing of assembler directives not done during pass 1.
4.Write the program and the assembling listing.

6.Write down the pass number (PASS 1 / PASS 2) of the following activities that occur in a two
pass assembler.
a.Object code generation.
b.Literals added to literal table.
c.Listing printed.
d.Address resolution of local symbols.
Answer :
Pass II
Pass I
Pass II
Pass I

7.What is a program block?


Program block : It refer to segments of code that are rearranged within a single object program
unit and control sections to refer to segments that are translated into independent object program
unit.
8.Define an assembler.
As assembler is a translator that translates source instructions (in symbolic language) into target
instructions (in machine language) on a one to one basis.

9.What is a common use of ORG?


The most common use for ORG is to specify a start address for the program in a computer
without an operating system. On such a machine, the user may select a start address and may
want to load different programs starting at different addresses. In such a case, the first source line
is an ORG and is the only ORG in the program.

10.What are three types of assembly language statements?


1.Imperative statements : it indicates an action to be performed during the expansion of the
assembled program.
2.Declaration statements : Declare the constant in decimal, binary and hexadecimal forms.
3.Assembler directives : It instructs the assembler to performcertain action during the assembly
of a program.

11.What are the disadvantages of assembly language program?


1.The programmer requires knowledge of the processor architecture and instruction set.
2.Many instructions are required to achieve small tasks.
3.Source programs tend to be large and difficult to follow.
4.Programs are machine dependent, requiring complete rewrites if the hardware is changed.

12.List the features of the assemblers?


1.Allows the programmer to use mnemonics when writing source code programs.
2.Variables are represented by symbolic names, not as memory locations.
3.Symbolic code is easier to read and follow.
4.Error checking is provided.
5.Changes can be quickly and easily incorporated with a re-assembly.
6.Programming aids are included for relocation and expression evaluation.

13.What is the use of mnemonics?


Mnemonics
1.Are more meaningful than hexa or binary values.
2.Reduce the chances of making an error.
3.Are easier to remember than bit values.

14.Explain the function of assembler while translating the program?


1.Replace symbolic addresses by numeric addresses.
2.Replace symbolic operation codes by machine operation code.
3.Reserve storage for instructions and data.
4.Translate constants into machine representation.

15.Explain the forward reference problem in one pass assembler.


1.Omit the address translation.
2.Insert the symbol into SYMTAB, and mark this symbol undefined.
3.The address that refers to the undefined symbol is added to a list of forward references
associated with the symbol table entry.
4.When the definition for a symbol is encountered, the proper address for the symbol is then
inserted into any instructions previous generated according to the forward reference list.

16.What is the use of location counter in assembler?


The LC is a variable, maintained by the assembler that contains the address into which the
current instruction will eventually be loaded. When the assembler starts, it clears the LC,
assuming that the first instruction will go into location 0.
After each instruction is assembled, the assembler increments the LC by the size
of the instruction. The LC, does not point to the current instruction. It just shows
where the instruction will eventually be loaded. When the sourceline has a label
(a newly defined symbol), the label is assigned the current value of the LC as its
value. The label and its value (plus some other information) are then placed in the symbol table.

17.What is the use of symbol table in assembler?


The symbol table is an internal, dynamic table that is generated, maintained, and use by the
assembler. Each entry in the table contains the definition of a symbol and has fields for the name,
value, and type of the symbol. Some symbol tables contain other information about the symbols.
The symbol table starts empty, labels and entered into it as their definitions are found in the
source, and the table is also searched frequently to find the values and types of symbols whose
names are known.

18.Intermediate file contains which type of record?


A record in a typical intermediate file contains
1.The record type. It can be an instruction, a directive, a comment,or an invalid line.
2.The LC value for the line.
3.A pointer to a specific entry in the OpCode table or the directive table. The second pass uses
this pointer to locate the information necessary to assemble or execute the line.
4.A copy of the source line. Notice that a label, if any, is not use by pass 2 must be included in
the intermediate .le since it is needed in the final listing.

19.What is the program relocation?


Program relocation is the process of modifying the addresses used in the address sensitive
instructions of the program such that the program can execute correctly from a designated area of
the memory.

20.What is the need for an assembler directive?


Assembler directives instruct the assembler to perform certain actions during the assembly of a
program. They can be used to declare variables, create storage space for result, to declare
constant.

PART - B
1.Explain the functions of SIC assembler in detail.
2.Explain the algorithm and data structures used for SIC assembler in detail.
3.Explain two pass assembler functions with suitable example program.
4.Explain machine dependant features of an assembler functions.
5.Explain machine independent features of an assembler functions.
6.Explain one-pass assembler functions with example program.
7.Discuss in detail about multi-pass assembler.
8.Discuss in detail about MASM assembler.
UNIT –III- LOADERS AND LINKERS

Loading

– Copies a object program into memory for execution.

Relocation

– Modifies an program so it can be loaded at a location different from the one specified at
assembly or compilation.

Linking

– Combines two or more object files and the references between them.

Loader

– System program that performs the loading function.

Linker or Linkage Editor

– Performs the linking function.Compilers & assemblers for a given machine produce
files in the same format
The most fundamental functions of a loader:

Bringing an object program into memory and starting its execution

characteristics of an absolute loader

No linking and relocation needed

Records in object program perform

Header record

Check the Header record for program name, starting address, and length (available memory)

Text record

Bring the object program contained in the Text record to the indicated address

End record

Transfer control to the address specified in the End record

ABSOLUTE LOADER
Explain SIC bootstrap loader.

• The bootstrap itself begins at address 0

• It loads the OS starting address 0x80

• No header record or control information, the object code is consecutive bytes of memory

• After load the OS, the control is transferred to the instruction at address 80.

Bootstrap loader

When a computer is first tuned on or restarted, a special type of absolute loader, the
bootstrap loader loads the first program (usually O.S.) to be run into memory
Bootstrap loader for SIC/XE

begin

X=0x80 ; the address of the next memory location to be loaded

Loop

A¬GETC ; read one char. From device F1 and convert it from the

; ASCII character code to the value of the hex digit

save the value in the high-order 4 bits of S

A¬GETC

A¬ (A+S) ; combine the value to form one byte

store the value (in A) to the address represented in register X

X¬X+1

End

Drawback of absolute loaders

 Programmer needs to specify the actual address at which it will be loaded into
memory.

 Difficult to run several programs concurrently, sharing memory between them.

 Difficult to use subroutine libraries.

 Solution: a more complex loader that provides Program relocation , Program


linking

RELOCATABLE LOADERS

Loaders that allow for program relocation are called relocating loaders or relative loaders.
o Two methods for specifying relocation as part of the object program

Modification records

o Suitable for a small number of relocations required when relative or immediate addressing
modes are extensively used

Relocation bits

o Suitable for a large number of relocations required when only direct addressing mode can be
used in a machine with fixed instruction format (e.g., the standard SIC machine)
DYNAMIC LINKING

 Dynamic Linking refers to postponing the linking function until execution time.

 A subroutine is loaded and linked to the rest of the program when it is first called
(Dynamic linking, dynamic loading, or load on call)

 Allow several executing programs to share one copy of a subroutine or library

 In object-oriented system, it allows the implementation of the object and its methods to
be determined at the time the program is run

 Dynamic linking provides the ability to load the routines only when they are needed
 Dynamically loaded must be called via an operating system service request

 Load-and-call service

 OS examines its internal tables to determine whether or not the routine is already
loaded

 Routine is loaded from library

 Control is passed from OS to the called subroutine

 Subroutine is finished

 Calling to a subroutine which is already in memory

 Dynamic Linking : Binding of the name to an actual address is delayed from load time
until execution time

 Advantages
 Load the routines when they are needed, the time and memory space will be saved.

 Avoid the necessity of loading the entire library for each execution

 i.e. load the routines only when they are needed

 Allow several executing programs to share one copy of a subroutine or library (Dynamic
Link Library, DLL)

LINKING LOADERS AND LINKAGE EDITORS

 A linking loader performs

 All linking and relocation operations

 Automatic library search

 Loads the linked program directly into memory for execution

 A linkage editor

 Produces a linked version of program (often called a load module or an


executable image), which is written to a file or library for later execution

 A simple relocating loader can be used to load the linked version of program into
memory

 The loading can be accomplished in one pass with no external symbol


table required
LINKAGE EDITOR

 Resolution of external references and library searching are only performed once

 In the linked version of programs

 All external references are resolved, and relocation is indicated by some


mechanism such as modification records or a bit mask

 External references is often retained in the linked program

 To allow subsequent relinking of the program to replace control sections, modify external
references, etc

Linking loader

 Searches libraries and resolves external references every time the program is executed.

 Avoid the writing and reading the linked program.

Linkage editor
 Resolution of external reference and library searching are only performed once

Linking loader

 Suitable when a program is reassembled for nearly every execution

 In a program development and testing environment When a program is used so


infrequently that it is not worthwhile to store the assembled and linked version.

Linkage editor

 If a program is to be executed many times without being reassembled, the use of a


linkage editor substantially reduces the overhead required.

 Machine-Independent Loader Features

 loading and linking are often thought of as operating system service functions.

Machine independent loader features:

 Automatic Library Search

 Loader Options

 Automatic Library Search for handling external references

 Allows programmers to use standard subroutines without explicitly including them in the
program to be loaded.

 The routines are automatically retrieved from a library as they are needed during linking.

 Linking loaders that support automatic library search:

 Enter the symbols from each Refer record into ESTAB

 When the definition is encountered (Define record), the address is assigned

 At the end of Pass 1, the symbols in ESTAB that remain undefined represent unresolved
external references

 The loader searches the libraries specified for routines that contain the definitions of
these symbols, and processes the subroutines found by this search exactly as if they had
been part of the primary input stream

 Since the subroutines fetched from a library may themselves contain external references
,the library search process may be repeated.
 The programmers can override the standard subroutines

 Common Loader Options – Command Language

 Specifying alternative sources of input :

 INCLUDE program-name(library-name)

 Direct the loader to read the designed object program name specified as a part of input
program.

 Changing or deleting external references

 DELETE csect-name

 Delete the named control section(s) from the program loaded when not used

 CHANGE name1, name2

 Change the external symbol name 1 to name 2 appeared in the object program

 Example

 INCLUDE READ(UTLIB)

 INCLUDE WRITE(UTILB)

 DELETE RDREC, WRREC

 CHANGE RDREC, READ

 CHANGE WRREC, WRITE

 MS-DOS Linker

 MS-DOS assembler (MASM) produce object modules (.OBJ)

 MS-DOS LINK is a linkage editor that combines one or more modules to produce a
complete executable program (.EXE)

 MS-DOS object module

 THEADER similar to Header record in SIC/XE

 MODEND similar to End record in SIC/XE


PROGRAM LINKING

 Control sections

 Refer to segments of codes that are translated into

 independent object program units

 These control sections could be assembled

 together or independently of one another

 It is necessary to provide some means for linking

 control sections together

 External definitions

 External references
 REF4 (ENDA-LISTA+LISTC)

 Control section A

 The values of ENDA and LISTA are internal. Only the value of LISTC is unknown.

 The address field is initialized as 000014 (ENDA-LISTA).

 One Modification record is needed for LISTC:

 +LISTC

 Control section B

 ENDA, LISTA, and LISTC are all unknown.

 The address field is initialized as 000000.

 Three Modification records are needed:

 +ENDA

 -LISTA
 +LISTC

 Control section C

 LISTC is defined in this control section but ENDA and LISTA are unknown.

 The address field is initialized as the relative address of LISTC ( 000030)

 Three Modification records are needed:

 +ENDA

 -LISTA

 +PROGC (***for relocation***) // Thus, relocation also use modification


record
TWO MARKS WITH ANSWERS

1.Define Linking.
Linking is a process in which the object modules created by the translator are bound with
necessary library routines. In the linking process ready to execute program is prepared. Thus
linking is a process of resolving external references between object modules.

2.What is the purpose of relocation bit in object code of relocation loader?


The purpose of relocation bits is to provide relocation. The 2 relocation bits are provided with
each instruction. Relocation is required for modifying addresses used in address sensitive
instructions of the program such that program can execute correctly from designated area of
memory.

3.Explain the functions of a loader.


i)It allocates the space for a program to execute in the memory.
This is known as allocation.
ii) It resolves the external references between various object modules.
This activity is known as linking.
iii)It also performs the task of relocation. That is it adjusts all the addresses at address sensitive
instructions according to the allocated memory locations.
iv)It performs a most important activity that is loading of executable modules in the main
memory by the loader.

4.What is BOOTSTRAP loader? Explain its characteristics with examples.


A small program written and stored in the ROM initially loads the operating system from
secondary storage to main memory. The operating system then takes the overall control. This
program which is responsible for booting up the system is called bootstrap loader.
Various characteristics of bootstrap loader are
i)The bootstrap loader is a small program and it should be fitted in the ROM.
ii)The bootstrap loader must load necessary portion of operating system in the main memory.
iii)The initial address at which the bootstrap loader is to be loaded in generally the lowest for
example at location 0000 or at the highest location and not at intermediate location.

5.Compare linking loader and linkage editor.


Linking Loader
The linking loader performs all the linking and relocation operations including automatic library
search.
Then loads the program directly into the memory for execution.
The linkage editor produces a liked version of the program. Such a linked version is also called
as load module or executable image. This load module is generally written in file or library for
later execution.
There is no need of relocating loader. The relocating loader loads the load module into the
memory.
The linking loader searches the libraries and resolves the external references every time the
program is executed.
If the program is executed many times without being reassembled then linkage
editor is the best choice.
The loading may require two passes. The loading can be accomplished in one pass.

6.Explain dynamic linking in detail.


Dynamic linking is a mechanism in which the linking and loading of external of external
references are postponed until execution time. Thus in dynamic linking the binder first prepares a
load module in which along with program code the allocation and relocation information is
stored. The loader simply loads the main module in the main memory. If any reference to a
subroutine comes, then the execution is suspended for a while. The loader then brings the re
quired subroutine in the main memory and then the execution process is resumed. Thus
in dynamic linking, both linking and loading is dynamic. There are certain advantages of
dynamic linking and those are
i)The overhead on the loader is reduced. The required subroutine will be loaded in the main
memory at the time of execution.
ii)The system can be reconfigured.
7.What is loader?
Loader is a utility program which takes object code as input prepares it for execution and loads
the executable code into the memory. Thus loader is actually responsible for initiating the
execution process.

8.What is the use of Linkage editor?


The binder which performs the linking function and produces adequate information about
allocation and relocation and writes this information along with the program code in a file is
called linkage editor. If frequent execution of the program is needed then linkage editor is used.
This is because although the program is repeatedly executed the linking is done only once. And
this helps in effective utilization of memory.

9.What is relocation bit?


The relocation bit associated with each word of object code specifies whether the relocation of
instruction is possible or not. The relocation bit value 1 indicates that there is a relocation. The
relocation bit value 0 shows that the address is absolute.

10.What is linking loader?


The linking loader is a program that searches the libraries and resolves external references every
time when the program is executed. When program is in development stage then at that time the
linking loader can be used.

11.What is function of MS-DOS LINK?


It is a linkage editor that combines one or more object modules to produce a complete executable
program. It can also combine the translated programs with other modules from object code
libraries.

12.What is use of PROGADDR and CSADDR?


PROGADDR is the beginning address in memory where the linked program is to be loaded. Its
value is supplied to the loader by the operating system.
CSADDR contains the starting address assigned to the control section currently being scanned
by the loader.

PART - B
1.Explain Absolute Loader concept with algorithm.
2.Explain Bootstrap loader with its program in detail.
3.Explain machine independent loader features in detail.
4.Explain machine dependant loader features in detail.
5.Explain linkage editor with neat diagram.
6.Explain program relocation concept with suitable example program.
7.Explain direct linking loader with examples.
8.Explain dynamic linking for loading and calling of a subroutine concept.
9.Explain MS-DOS Linker in detail.
10.Explain algorithm and data structures used for a linking loader in detail.
UNIT – IV – MACROPROCESSORS

MACROPROCESSORS

 Define Macro.

 A macro instruction (macro) is a notational convenience for the programmer.

 It allows the programmer to write a shorthand version of a program

 A macro represents a commonly used group of statements in the source


programming language.

 Expanding the macros - the macro processor replaces each macro


instruction with the corresponding group of source language statements.

 What is a macro processor?

 A macro processor - Essentially involve the substitution of one group

 of characters or lines for another. Normally, it performs no analysis of the text it

 handles. It doesn‟t concern the meaning of the involved statements during macro
expansion

 o The design of a macro processor generally is machine independent.

 Three examples of actual macro processors:

 A macro processor designed for use by assembler language programmers

 Used with a high-level programming language

 General-purpose macro processor, which is not tied to any particular language


BASIC MACROPROCESSOR FUNCTIONS

 Macro processor should processes the

 Macro definitions

 o Define macro name, group of instructions

 Macro invocation (macro calls)

 o A body is simply copied or substituted at the point of call Expansion with substitution
of parameters

 o Arguments are textually substituted for the parameters

 o The resulting procedure body is textually substituted for the call

MACRO DEFINITION

 Two new assembler directives are used in macro definition:

 MACRO: identify the beginning of a macro definition

 MEND: identify the end of a macro definition


 o label op operands

 name MACRO parameters

 :

 body

 :

 MEND

 o Parameters: the entries in the operand field identify the parameters of the macro
instruction

 We require each parameter begins with „&‟

 o Body: the statements that will be generated as the expansion of the macro.

 o Prototype for the macro:

 The macro name and parameters define a pattern or prototype for the macro instructions
used by the programmer
MACRO INVOCATION

MACRO EXPANSION

 Each macro invocation statement will be expanded into the statements that form the
body of the macro.

 o Arguments from the macro invocation are substituted for the parameters in the
macro prototype.

 The arguments and parameters are associated with one another according to their
positions.

 o The first argument in the macro invocation corresponds to the first parameter in the
macro prototype, etc.

 Macro Expansion Example


 Two-pass macro processor

 Pass1: process all macro definitions

 Pass2: expand all macro invocation statements


 Problem

 Does not allow nested macro definitions

 Nested macro definitions

 The body of a macro contains definitions of other macros

 Because all macros would have to be defined during the

 first pass before any macro invocations were expanded

 Solution

 One-pass macro processor

ONE PASS MACROPROCESSOR

 Every macro must be defined before it is called

 One-pass processor can alternate between macrodefinition and macro expansion

 Nested macro definitions are allowed

DATASTRUCTURES

 MACRO DEFINITION TABLE (DEFTAB)

 Macro prototype

 States that make up the macro body

 Reference to parameters are converted to a positional notation.

 MACRO NAME TABLE (NAMTAB)

 Role: an index to DEFTAB

 Pointers to the beginning and end of the definition in DEFTAB

 MACRO ARGUMENT TABLE (ARGTAB)

 Used during the expansion

 Invocation  Arguments are stored in ARGTAB according to their position


ALGORITHM AND DATA STRUCTURES
DIFFERENCE BETWEEN MACROS AND SUBROUTINE

 After macro processing, the expanded file can be used as input to the assembler.

 The statements generated from the macro expansions will be assembled exactly as though
they had been written directly by the programmer.

 The differences between macro invocation and subroutine call

 The statements that form the body of the macro are generated each time a macro
is expanded.
 Statements in a subroutine appear only once, regardless of how many times the
subroutine is called.

machine independent features of macro processors

 Other Macro Features

 Concatenation of macro parameters

 Generation of unique labels

 Conditional macro expansion

 Keyword Macro Parameters

 Concatenation of Macro Parameters

 Pre-concatenation

 LDA X&ID1

 Post-concatenation

 LDA X&ID1

 Example: Figure 4.6

 Concatenation Example
 Generation of Unique Labels

 Example

 JEQ *-3

 inconvenient, error-prone, difficult to read

 Example Figure 4.7

 $LOOP TD =X‟&INDEV‟

 1st call:

 $AALOOP TD =X‟F1‟

 2nd call:

 $ABLOOP TD =X‟F1‟


TWO MARKS WITH ANSWERS
1.Define macro.
A Macro instruction is simply a notational convenience for the programmer. That is a macro
represents commonly used (or repeated ) group of statements used in the source programming
language. The Macro processor replaces each macro invocation (or call) with the corresponding
group of source language statements. That is called macro expansion.

2.What is conditional macro expansion?


A preprocessor statement can alter the flow of control during expansion such that some model
statements are either never visited during expansion, or repeatedly visited during expansion is
called macro conditional expansion.

3.What is meant by macro time variable?


Macro time variable used to store working values during the macro expansion.
Any symbol that begins with the character and that is not a macro instruction parameter is
assumed to be a macro time variable.

4.Define macro definition and macro expansion.


Macro Definition :
It is enclosed between a macro header statement and a macro end statement. Macro definition
typically located at the start of a program.
Macro Expansion :
A macro call leads to macro expansion. During macro expansion, the macro call statement is
replaced by a sequence of assembly statement.

5.What are the three main data structures used by our macro processor?
1.Definition table (DEFTAB)
2.Name table (NAMTAB)
3.Argument table (ARGTAB)

6.List the statements present in a macro definition.


MACRO prototype
List of statements
MEND

7.What is a nested macro call? How is it expanded?


A model statement in a macro may constitute a call on another macro. Such calls are known as
nested macro calls.

8.State how positional parameters and arguments are related in a macroprocessor?


Parameters and arguments were associated with each other according to their positions in the
macro prototype and the macro invocation statement. With positional parameters, the
programmer must be careful to specify the arguments in the proper order. If an argument is to be
omitted, the macro invocation statement must contain a null argument to maintain the correct
argument positions.

9.How many parameters can a macro have?


It depends on the MDT organization and on the size of the data structures used for binding.
Typically, the maximum number of parameters ranges between a few tens and a few hundreds.

10.What if the last argument of an expansion is null? How can the assembler distinguish between
a missing last argument and a null one?
If the last argument is null, it should be preceded by a comma. A missing last comma indicates a
missing argument.

11.Normally, the definition of a macro must precede nay expansions of it. If we eliminate that
restriction, what modifications do we have to make to the assembler?
Add another pass (pass – 1?) to collect all macro definitions and store them in the MDT. Pass 0
would now be concerned only with macro expansions.

12.What could be a practical example of justifying the actual removal of a macro from the
MDT?
Nested macro definition. In such a case, each expansion of certain macros causes another macro
definition to be stored in the MDT, and space in the MDT may be exhausted very rapidly.
13.What is the difference between attributes of symbols and of macro arguments?
The difference is in scope. Attributes of macro arguments exist only while the macro is
expanded. Attributes of a symbol exist while the symbol is stored in the symbol table.

14.What is the meaning of „N MACRO M1, M2 =, M3‟?


The programmer probably meant a default value of null for parameter M2. However, depending
on the syntax rules of the assembler, this may also be considered an error.

15.Why is nested macro expansion useful?


Because it allows the implementation of recursive macros.

16.Is it valid to write „AIF Q > N.F‟?


Yes, many assemblers support simple expressions in the AIF directive.

17.What should be printed in the object code field when a macro definition is listed?
Nothing, since the assembler does not process the macro lines at definition time.

18.Library routines are in the form of object files. Can such a routine be an absolute object file?
Yes, but then it can be used only by an absolute loader.

19.What are the basic tasks that must be performed by the macroprocessor?
1.Recognize the macro definition.
2.Save the definition.
3.Recognize the call.
4.Expand call and substitute arguments.

20.What are the different features of macro facility?


Macro facilities are
1.Macro Instruction arguments.
2.Conditional macro expansion.
3.Macro calls within macros.
4.Macro instruction defining macro.

21.How do we differentiate between open subroutine and closed subroutines?


Open subroutine is one whose code is inserted into the main program. A closed subroutine can
be stored outside the main routine and control transfers to the subroutine. If the same open
subroutine were called four items it would appear in four different places in the calling program.
Open subroutine also called macro definition. Closed subroutine must perform two tasks in main
program: transfer of control and transfer of data. Closed subroutines had to be loaded into
memory at a specific address.

22.How could a non-recursive macro pre-processor allow for the invocation of macros within the
macros? What would be the advantages and disadvantages of such an approach?
Non-recursive macro pre-process allow for the invocation of macros within macros as follows:
1.Recognize call processor must recognize macro calls that appear as operations mnemonics.
2.Expand call and subroutine argument.
3.The processor must store the macro instruction definitions, which it will need for expanding
macro calls.
4.A macro instruction processor must recognize macro definitions identified by the MACRO and
MEND pseudo-op.

PART B
1.Explain recursive macro expression in detail.
2.With suitable example explain macro processor design options in detail.
3.What is a general purpose macro processor? Explain.
4.Write notes on MASM macro processor
5.State and explain the algorithm for an one pass macro processor.
6.With an example explain conditional macro expansion.
7.Write an algorithm for a simple one pass macro processor.
8.Explain machine dependent macro processor features in detail.
9.Explain machine independent macro processor features in detail.
10.Explain ANSI-C macro processor with example.
UNIT –V- SYSTEM SOFTWARE TOOLS

TEXT EDITORS

 These are the primary interface to the computer for all types of “Knowledge workers” as
they compose,organize,study and manipulate computer-based information

OVERVIEW OF THE EDITING PROCESS

 An interactive editor is a computer program that allows a user to create and revise a target
document.

 The term document includes objects such as computer


programs,texts,equations,tables,diagrams,line arts and photographs-anything that one
might find on a printed page.

 Text editor is one in which the primary elements being edited are character strings of the
target text.

 The document editing process is an interactive user-computer dialogue designed to


accomplish four taks :

 Select the part of the target document to be viewed and manipulated

 Determine how to format this view on-line and how to display it.

 Specify and execute operations that modify the target document.

 Update the view appropriately.

 Traveling – Selection of the part of the document to be viewed and edited. It involves
first traveling through the document to locate the area of interest such as “next
screenful”,”bottom”,and “find pattern”

 Traveling specifies where the area of interest is;

 Filtering : The selection of what is to be viewed and manipulated is controlled by


filtering.

 Filtering extracts the relevant subset of the target document at the point of interest,such as
next screenful of text or next statement.
 Formatting : Formatting then determines how the result of filtering will be seen as a
visible representation(the view) on a display screen or other device.

 Editing : In the actual editing phase ,the target document is created or altered with a set
of operations such as insert,delete,replace,move or copy.

 Manuscript oriented editors operate on elements such as single


characters,words,lines,sentences,and paragraphs;

 Program-oriented editors operates on elements such as identifiers,key words and


statements

USER INTERFACE

 The user of an interactive editor is presented with a conceptal model of the editing
system. The model is an abstract framework on which the editor and the world on which
the operations are based.

 Some of the early line editors simulated the world of 80-character card image lines.

 The Screen-editors define a world in which a document is represented as a quarter-plane


of text lines.unbounded both down and to the right. The user sees ,through a cutout ,only
a rectangular subset of this planeon a multi line display terminal. The cutout can be move
left or right ,and up or down ,to display other portions of the document.

 The user interface is also concerned with the input devices,the output devices,and the
interaction language of the system.

 Input Devices : The input devices are used to enter elements of text being edited ,to enter
commands,and to designate editable elements.

 1)Text devices

 2)Button devices

 3)Locator devices

 1)Text or string devices are typically typewriter like keyboards on which user presses
and release keys ,sending unique code for each key. Virtually all computer key boards are
of the QWERTY type.

 2)Button or Choice devices generate an interrupt or set a system flag,usually causing an


invocation of an associated application program. Also special function keys are also
available on the key board.
 3)Locator devices : They are two-dimensional analog-to-digital converters that position
a cursor symbol on the screen by observing the user‟s movement of the device. The most
common such devices are the mouse and the tablet.

 The Data Tablet is a flat ,rectangular,electromagnetically sensitive panel. Either the


ballpoint pen like stylus or apuck,a small device similar toa mouse are moved over the
surface. The tablet returns to a system program the co-ordinates of the position on the
data tablet at which the stylus or puck is currently located. The program can then map
these data-tablet coordinates to screen coordinates and move the cursor to the
corresponding screen position.

 Text devices with arrow(Cursor) keys can be used to simulate locator devices. Each of
these keys shows an arrow that points up,down,left,or right.Pressing an arrow key
typically generates an appropriate character sequence ,the program interpretsw this
sequence and moves the cursor in the direction of the arrow on the key pressed.

 Voice-input Devices : ,which translate spoken words to their textual equivalents,may


prove to be the text input devices of the future

 OUTPUT DEVICES

 The output devices let the user view the elements being edited and the result of the
editing operations. The first output devices were teletypewriters and other character-
printing terminals that generated output on paper. Next CRT(Cathode Ray Tube)
technology which uses CRT screen essentially to simulate the hard-copy teletypewriter.
Todays advanced CRT terminals use hardware assistance for such features as moving the
cursor,inserting and deleting characters and lines,and scrolling lines and pages.

INTERACTION LANGUAGE

 The interaction language of the text editor is generally one of several common types.

 1) The typing oriented or text command-oriented method

 is the oldest of the major editing interfaces. The user communicate with the editor by
typing text stringsboth for command names and and for operands. These strings are sent
to the editor and are usually echoed to the output device.

 Typed specification often requires the user to remember the exact form of all
commands ,or at least their abbreviations.

 He Help facility have to be used or manuals have to be refered. Time consuming for
in-experienced users.
 2) Function key interfaces :

 Each command is associated with marked key on the key board

 Eg Insert key,Shift key,Control key

 3)Menu oriented interfaces

 A menu is a multiple choice set of text strings or icons which are graphical symbols that
represent objects or operations

 The user can perform actions by selecting items for the menus

 The editor prompts the user with a menu

 One problem with menu oriented system can arise when there are many possible actions
and several choices are required to complete an action. The display area of the menu is
rather limited.E

TYPICAL EDITOR STRUCTURE

 Most Text editors have a structure similar to that shown above.

 The command Language Processor accepts input from the user‟s input devices,and
analyzes the tokens and syntactic structure of the commands. It functions much like the
lexical and syntactic phases of a compiler. The command language processor may invoke
the semantic routines directly. In a text editor,these semantic routines perform functions
lsuch as editing and viewing.

 The semantic routines involve travelling,editing,viewing,and display functions.

 Editing operations are always specified by the user

 .In editing a document,the start of the area to be edited is determined by the current
editing pointer maintained by the editing component ,which is the collection of modules
dealing with editing tasks. The current editing pointer can be set or reset explicitly by the
user using travelling commands ,such as next paragraph and next screen,or implicitly as a
side effect of the previous editing operation such as delete paragraph.

 The traveling component of the editor actually performs the setting of the current editing
and viewing pointers,and thus determines the point at which the viewing and /or editing
filtering begins.
 When the user issues an editing command,the editing component invokes the editing
filter. This component filters the document to generate a new editing buffer based on the
current editing ponter as well as on the editing filter parameters. These parameters,which
are specified by both by the user and the system,provide information such as the range of
the text that can be affected by an operation. Filtering may consist of the selection of
contiguous characters beginning at the current point.

 Similarly,in viewing a document ,the start of the area to be viewed is determined


by the current viewing pointer. This pointer is maintained by the viewing component of
the editor,which is a collection of modules responsible for determining the next view.

 The current viewing pointer can be set or resetexplicitly by the user or implicitly by the
systemas a result of previous editing operation.

 When the display needs to be updated,the viewing component invokes the viewing filter.

 This componet filters the document to generate a new viewing buffer based on the current
viewing pointer as well as on the viewing filter parameters.

 In Line editors,the viewing buffer may contain the current line; in screen editors,this
buffer may contain rectangular cut out of the quarter-plane of text. This viewing buffer is
then passed to the display component of the editor,which produces a display by mapping
the buffer to a rectangular subset of the screen,usually called a window.

 The editing and viewing buffers,while independent,can be related in many ways. Ina
simplest case ,they are identical:theuser edits the material directly on the screen.On the
other hand ,the editing and viewing buffers may be completely disjoint.


 EG The user of a certain editor might travel to line 75,and after viewing it,decide to
change all occurrences of “ugly duckling” to “swan” in lines 1 through 50 of the file by
using a change command such as

 [1,50] c/ugly duckling/swan/

 As apart of the editing command there is implicit travel to the first line of the file. Lines 1
through 50 are then filtered from the document to become the editing buffer.Successive
substitutions take place in this editing buffer without correspoing updates of the view

RELATIONSHIP BETWEEN VIEWING AND EDITING BUFFERS

 Windows typically cover the entire screen or rectangular portion of it.

 Mapping viewing buffers to windows that cover only part of the screen is especially
useful for editors on modern graphics based workstations.

 Such systems can support multiple windows, simultaneously showing different portions
of the same file or portions of different file. This approach allows the user to perform
interfile editing operations much more effectively than with a system only a single
window.

 The mapping of the viewing buffer to a window is accomplished by two components of


the system. First, the viewing component formulates an ideal view often expressed in a
device independent intermediate representations. This view may be a very simple one
consisting of a windows worth of text arranged so that lines are not broken in the middle
of words. At the other extreme, the idealised view may be a facsimile of a page of fully
formatted and typeset text with equations,tables and figures. Second the display
components takes these idealised view from the viewing component and maps it to a
physical outputdevice the most efficient manner possible.

 The components of the editor deal with a user documents on two levels:

 in main memory and in the disk file system. Loading an entiredocument into main
memory may be infeasible. However if only part ofa document is loaded and if many user
specified operations require a disk read by the editor to locate the affected portions,
editing might beunacceptably slow. In some systems this problem is solved by the

 mapping the entire file into virtual memory and letting the operating system perform
efficient demand paging .An alternative is to provide is the editor paging routines which
read one or more logical portions of a document into memory as needed. Such portions
are often termed

 pages, although there is usually no relationship between these pages and the hard copy
document pages or virtual memory pages. These pages remain resident in main memory
until a user operation requires that another portion of the document be loaded.

 Editors function in three basic types of computing environment:

 time-sharing, stand-alone and distributed. Each type of environment imposes some


constraint on the design of an editor. The time sharing editor must function swiftly within
the context of the load on the computer痴 processor, central memory and I/O devices.
The editor on a stand-alone system must have access to the functions that the time
sharing editors obtain from its host operating system. This may be provided in pare by a
small local operating system or they may be built into the editor itself if the stand alone
system is dedicated to editing. The editor operating in a distributed resource sharing local
network must, like a stand alone editor, run independently on each user痴 machine and
must, like a time sharing editor, content for shared resources such as files.

DEBUGGER

 A debugger is a computer program that is used to test and debug other programs.
 When the program crashes, the debugger shows the position in the original code if it is a
source-level debugger or symbolic debugger, commonly seen in integrated
development environments(IDEs)

 Typically, debuggers also offer more sophisticated functions such as running a program
in the following manner

 step by step (single-stepping)

 stopping (breaking) (pausing the program to examine the current state) at some kind of
event by means of breakpoint, and tracking the values of some variables.

 Some debuggers have the ability to modify the state of the program while it is running,
rather than merely to observe it.

INTERACTIVE DEBUGGING SYSTEMS

 An interactive debugging system provides programmers with facilities that aid in testing
and debugging of programs interactively

FUNCTIONS AND CAPABILITIES

 One important requirement of any IDS is the observation and control of the flow of
program execution

 Setting break points – execution is suspended, use debugging commands to analyze the
progress of the program, résumé execution of the program

 Setting some conditional expressions, evaluated during the debugging session, program
execution is suspended, when conditions are met, analysis is made, later execution is
resumed

 A Debugging system should also provide functions such as tracing and traceback

 Tracing can be used to track the flow of execution logic and data modifications

 The control flow can be traced at different levels of detail – procedure, branch, individual
instruction, and so on…

 Traceback can show the path by which the current statement in the program was reached

 It can also show which statements have modified a given variable or parameter

 The statements are displayed rather than as hexadecimal displacements

 How functions are provided


 To provide these functions, a debugger should consider the language in which the
program being debugged is written

 A single debugger – many programming languages – language independent

 The debugger - a specific programming language – language dependent

 The debugger must be sensitive to the specific language being debugged

 The context being used has many different effects on the debugging interaction

 The statements are different depending on the language

Cobol - MOVE 6.5 TO X

Fortran - X = 6.5

C - X = 6.5

 Examples of assignment statements

 What about optimized code ?

It is also important that a debugging system be able to deal with optimized code

Leads to rearrangement Many optimizations like

- invariant expressions can be removed from loops

- separate loops can be combined into a single loop

- redundant expression may be eliminated

- elimination of unnecessary branch instructions

 of segments of code in the program

 All these optimizations create problems for the debugger, and should be handled
carefully

 The important requirement for an interactive debugger is that it always be available

 Must appear as part of the run-time environment and an integral part of the system

 When an error is discovered, immediate debugging must be possible


 The debugger must communicate and cooperate with other operating system components
such as interactive subsystems

 Debugging is more important at production time than it is at application-development


time

 When an application fails during a production run, work dependent on that application
stops

 The debugger must also exist in a way that is consistent with the security and integrity
components of the system

 The debugger must coordinate its activities with those of existing and future language
compilers and interpreters

TWO MARKS WITH ANSWERS


1.Define a software tool.

Software tool is a system program which Interfaces a program with the entity generating its input
data or Interfaces the results of a program with the entity consuming them.

2.List out the different forms of editor and hint on each editor form.

Different forms of editor

1.Line editors.

2.Steam editors.

3.Screen editors.

4.Word processors.

5.Structure editors.

3.Define profile monitor.

Profile monitor is a software tool that collects information regarding the execution behavior of a
program.

4.List the fundamental functions of editing.

Traveling, editing, viewing and display.

5.Which methods used for implementing command dialogs?

Three methods are used


1.Command languages.

2.Command menu

3.Direct manipulation

6.What are the various functions of a debugger?

Functions are tracing, traceback, unit test and execution sequencing.

7.What is the locator device?

Locator devices are two dimensional analog to digital converters that positions a cursor symbol on
the screen by observing the user’s movement of the device.

8.What is a menu?

A menu is a multiple choice set of text strings or icons, which are graphic symbols that represent
objects or operations.

9.How viewing buffer is mapped with windows?

View component formulates an ideal view often expressed in a device independent intermediate
representation. Another method is display component,which takes idealized view from the viewing
component and maps it to a physical output device in the most efficient manner possible.

10.What about optimized code ?

It is also important that a debugging system be able to deal with optimized code

11.List the Leads to rearrangement Many optimizations

 - invariant expressions can be removed from loops

 - separate loops can be combined into a single loop

 - redundant expression may be eliminated

 - elimination of unnecessary branch instructions

12. Define debugger

The debugger must communicate and cooperate with other operating system components
such as interactive subsystems

13. what is the need for debugging.

Debugging is more important at production time than it is at application-development


time
14.What are the types of editors?

Editors function in three basic types of computing environment:

time-sharing, stand-alone and distributed.

15.Define viewing filter.

When the display needs to be updated,the viewing component invokes the viewing filter.

PART - B

1.Explain the important functions and capabilities of an editor.

2.Explain interactive debugging system in brief.

3.List the various functions of interpreters.

You might also like