Upload
durga-lodhi
View
221
Download
0
Embed Size (px)
Citation preview
8/2/2019 System Programming Assignment 1......
1/24
Department of Computer Science and Information Technology
SYSTEM PROGRAMMING ASSIGNMENT - 1Submission Date: 2nd April, 2012
1. What is language processor? Explain with figure.
Ans: Language processors are language translation software like
assembler, interpreter and compiler. Allows the development of
applications in the language most appropriate to the task, removing the need for
developing at the machine level. Programmers can ignore the machine-dependentdetails of programming. Receives a textual representation of an algorithm in a
source language, and produces as output a representation of the same algorithm in
the objectortarget language.
Source languageObject or o object of targetlanguage
Fig. Language processor
Language processor represented by T-Diagram:-
The language processor itself is written in what is`s1called the
implementation language. These relations are often represented in T-diagrams.
LPs nameSource language Target language
ImplementationLanguage
T-Diagram Example:-
LAKSHMI NARAIN COLLEGE OF TECHNOLOGY
Sanwer Road, INDORE
Language processor
http://www.lnctindore.com/(S(qslapvyrmtczcnjj3xf4zya5))/index.aspx8/2/2019 System Programming Assignment 1......
2/24
Delphi
Pascal Machine code
C++
This diagram represents a language processor which translates Pascal to machine
code; the processor is called Delphi, and is written in C++.
Conceptual structure:
Source Executable codetext
Front-end Back-end
Front-end: the part of the language processor that performs the analysis of thesource language
Back-end: the part of the language processor that does the target languagesynthesis.
In a fully-modular design the front-end is totally unaware of the back-end inpractice, this is inefficient, and even the best-structured compilers compromise.
Types of language processing:-
Analysis Semanti
cSynthes
is
8/2/2019 System Programming Assignment 1......
3/24
Assemblers:Language processors that map low-level language instructions intomachine code, e.g. the ARM assembler>
Compilers:Language processors that map high-level language instructions intomachine code, e.g. Delphi, GCC, Visual C++ etc.Pre-processors: Language processors that map a superset of a high-levellanguage into the original high-level language, or perform simple text substitutions
before translation takes place.
Interpreters:Language processors that include an execution component, i.e. theyperform the operations specified in the source text, rather than re-expressing them
in another language; e.g. Mat lab.
Dissemblers:language processors that attempt to take object code at a low leveland regenerate source code at a higher level.
Language Processor Examples:
GCC, Delphi, Visual StudioTeX/LaTeX
Postscript
HTML & Web browsers
XML
2. What is assembly language programming?
Explain with example.
8/2/2019 System Programming Assignment 1......
4/24
Assembly language is the most basic programming language available for any
processor. With assembly language, a programmer works only with operations
implemented directly on the physical CPU. Assembly language lacks high-level
conveniences such as variables and functions, and it is not portable between
various families of processors. Nevertheless, assembly language is the mostpowerful computer programming language available, and it gives programmers the
insight required to write effective code in high-level languages. Learning assembly
language is well worth the time and effort of every serious programmer.
The Basics:
Before we can explore the process of writing computer programs, we have to go
back to the basics and learn exactly what a computer is and how it works. Every
computer, no matter how simple or complex has at its heart exactly two things: aCPU and some memory. Together, these two things are what make it possible for
your computer to run programs.
On the most basic level, a computer program is nothing more than a collection of
numbers stored in memory. Different numbers tell the CPU to do different things.
The CPU reads the numbers one at a time, decodes them, and does what the
numbers say. For example, if the CPU reads the number 64 as part of a program, it
will add 1 to the number stored in a special location called AX. If the CPU reads
the number 146, it will swap the number stored in AX with the number stored in
another location called BX. By combining many simple operations such these into
a program, a programmer can make the computer perform many incredible things.
As an example, here are the numbers of a simple computer program: 184, 0, 184,
142, 216, 198, 6, 158, 15, 36, 205, and 32. If you were to enter these numbers into
your computer's memory and run them under MS-DOS, you would see a dollar
sign placed in the lower right hand corner of your screen, since that is what these
numbers tell the computer to do.
Assembly Language:
8/2/2019 System Programming Assignment 1......
5/24
Although the numbers of the above program make perfect sense to a computer,
they are about as clear as mud to a human. Who would have guessed that they put
a dollar sign on the screen? Clearly, entering numbers by hand is a lousy way to
write a program.
It doesn't have to be this way, though. Along time ago, someone came up with the
idea that computer programs could be written using words instead of numbers.
program called an assembler would then take the programmer's words and convert
them to numbers that the computer could understand. This new method, called
writing a program in assembly language, saved programmers thousands of hours,
since they no longer had to look up hard-to-remember numbers in the backs of
programming books, but could use simple words instead.
The program above, written in assembly language, looks like this:
MOV AX, 47104
MOV DS, AX
MOV [3998], 36
INT 32
When an assembler reads this sample program, it converts each line of code in
toone CPU-level instruction. This program uses two types of instructions, MOVand INT. On Intel processors, the MOV instruction moves data around, while the
INT instruction transfers processor control to the device drivers or operating
system.
The program still isn't quite clear, but it is much easier to understand than it was
before. The first instruction, MOV AX, 47104, tells the computer to copy the
number 47104 into the location AX. The next instruction, MOV DS, AX, tells the
computer to copy the number in AX into the location DS. The next instruction,
MOV [3998], 36 tells the computer to put the number 36 into memory location3998. Finally, INT 32 exits the program by returning to the operating system.
Before we go on, I would like to explain just how this program works. Inside the
CPU are a number of locations, called registers, which can store a number. Some
registers, such as AX, are general purpose, and don't do anything special. Other
registers, such as DS, control the way the CPU works. DS just happens to be a
8/2/2019 System Programming Assignment 1......
6/24
segment register, and is used to pick which area of memory the CPU can write to.
In our program, we put the number 47104 into DS, which tells the CPU to access
the memory on the video card. The next thing our program does is to put the
number 36 into location 3998 of the video card's memory. Since 36 is the code for
the dollar sign, and 3998 is the memory location of the bottom right hand corner ofthe screen, a dollar sign shows up on the screen a few microseconds later. Finally,
our program tells the CPU to perform what is called an interrupt. An interrupt is
used to stop one program and execute another in its place. In our case, we want
interrupt 32, which ends our program and goes back to MS-DOS, or whatever
other program was used to start our program.
3. What is Macro? Define stepwise.
A macro instruction (abbreviated to macro) is simply a notational convenience for
the programmer. A macro represents a commonly used group of statements in the
source programming language.
Replace each macro instruction with the corresponding group of
source language statements.A macro processor is not directly related to thearchitecture of the computer on which it is to run Macro processors can also be
used with high-level programming languages, OS command languages, etc.He
twill ingredients of macro processing are the s: rmbol table aril the input text. Thisprocessor has a very small initial Sybil table (mostly consisting of processor option
swig etches) so the input text contains the information to build the Sybil table. The
facilities are of four skirls:
(1) Substitution of text,
(2) Manipulation of the Sybil table.
(3) control of the substitution,
(4) Others (e.g. comments, .processor options).
Basic Macro Processor Functions:
Expanded program
8/2/2019 System Programming Assignment 1......
7/24
One-Pass Macro Processor:
Prerequisite:
Every macro must be defined before it is called.
Sub-procedures:
Macro definition: DEFINE.
Macro invocation: EXPAND
MACRO NAMTAB
DEFTAB
A program with Macro
definitions and Macro
invocations. Macro
Processor
A program without
Macro definitions
Assembler
Object
program
PROCESSLINE
DEFINE
EXPAND
8/2/2019 System Programming Assignment 1......
8/24
CALLARGTAB
Keyword Macro Parameters:
Positional parameters
Parameters and arguments were associated with each other according
to their positions in the macro prototype and the macro invocation
statement
Consecutive commas is necessary for a null argument
GENER, DIRECT,,,,,,3
4. What is Macro concept? Give example.
Macro processors have been developed for some high-level programminglanguages. These special-purpose macro processors are similar in general function
and approach; however, the details differ from language to language.
Macros automate application tasks. For example, Corel WordPerfect macros
automate tasks such as setting margins, selecting a font, or creating a merge file.
Macros tasks consist of instructions calledstatements. There are several kinds of
statements: assignments, conditions, loops, comments, and commands. For
example,
Margin Left (1.0")
Margin Right (1.0")
Are Corel WordPerfect commands that set one inch left and right margins (the
task). Each command represents one instruction or statement. The simplest macro
consists of only one statement. Complex macros have hundreds of statements. The
sequence of statements determines how a macro performs its tasks.
8/2/2019 System Programming Assignment 1......
9/24
Syntax:
Syntax refers to rules that govern the form of macro statements and expressions.
For example, the following statement types John Doe:
Type (Text: "John Doe")
The next example lacks a closing parenthesis.
Type (Text: "John Doe"
The syntax is incorrect and produces an error message.
Expressions:
Expressions represent values. They are used in several statements (assignments,conditions, loops, and commands) to form a statement that the computer can
understand. To create expressions, you use variables and constants. Variables
represent data that can change while a macro is playing (for example, vCount), and
constants represent data items that cannot change during macro play. You combine
variables and constants with operators (+, -, *, %, etc.) to create an expression. For
example, a valid expression would be count .
Assignment Statements:
Assignment statements assign the value of an expression to a variable. For
example,
x := "John Doe"
Result: x equals John Doe
y := 5
Result: y equals 5
z := 3 + 4
Result: z equals the result of 3 + 4
The assignment operator (:= or =) assigns the value of a right operand expression
to a left operand variable.
8/2/2019 System Programming Assignment 1......
10/24
Conditional Statements:
Conditional statements play a statement or group of statements (statement block)
when a specified condition is met. Conditional statements are useful for displaying
a list of options. A statement block is played depending on which option the user
chooses. Conditional statements include Case, If, and Switch.
Loop Statements:
An expression is true or while an expression is true. The macro then exits the loop
and continues to the next statement. Loop statements play a statement or statement
block a specified number of times until statements include For, For Next, For
Each, Repeat, and While.
Comment Statements:
Comment statements contain notes and other information that do not affect macro
play. Use comment statements to explain the purpose of your macro, describe its
components, or to prevent a statement from playing. Comment statements help if
you have to modify a macro months after it is written or if someone else has to
understand your macro. A comment either begins with // and ends with a hardreturn [HRt], or it begins with /* and ends with */. See Perfect Script // and /* */
commands.
Command Statements:
Command statements consist of a name and can include one or more parameters.
Commands represent instructions to the parent application. There are three types of
macro commands: product commands, OLE Object commands, and programming
commands. Product commands are specific to a product; for example, Corel
WordPerfect or Corel Quattro Pro. OLE object commands perform tasks on an
OLE object. Programming commands work across applications; they are Perfect
Script commands. Command names often describe an action, such as Font, Margin
Left, Advance, and Foot note Options in Corel WordPerfect; or Align Objects Left,
Bitmap Blur, Select All Objects, and Tool bar Copy in Corel Presentations; or
Range in Microsoft Excel. Command names are not case sensitive and usually do
http://jdan.com/perfectscript/macros/ch11_aa.htm#_VPID_11_78http://jdan.com/perfectscript/macros/ch11_aa.htm#_VPID_11_79http://jdan.com/perfectscript/macros/ch11_aa.htm#_VPID_11_79http://jdan.com/perfectscript/macros/ch11_aa.htm#_VPID_11_788/2/2019 System Programming Assignment 1......
11/24
not contain spaces. Exceptions include programming commands that call a
subroutine, such as Case Call or On Cancel Call. A macro can use more than one
application product and OLE object. Commands to the non-default application or
OLE Object require a prefix, which is specified in an Application or Object
statement. In this example,
A1.AboutDlg ()
A1 (followed by a period) is the prefix. It tells the compiler to use the application orObject assigned A1 in a Perfect Script Application or Object statement.
Subroutines:
Subroutines consist of a statement or group of statements (statement block) that are
played when the macro calls a subroutine. For example,
Call (Sub Example)
...(other statements)...
Label (Sub Example)
...statement block...
Return
The calling statement Call (Sub Example) calls (directs macro play to) the
subroutine Label (Sub Example). Return directs macro play to the statement that
follows Call (Sub Example).
Subroutines include functions, procedures, and labels. Subroutines are useful
because the statements in a subroutine are accessible to any part of a macro, and
can be called any number of times during play.
Compilers:
A macro compiler is used to compile or "translate" macros so that Corel
WordPerfect Suite applications can play them. Macros in Corel WordPerfect are
compiled when you record, play, or save them, or when you click Save & Compileor Options Close Macro on the Macro Edit feature bar.
5. What is relocated concept?
8/2/2019 System Programming Assignment 1......
12/24
Relocation is an important concept. To understand this concept we shall begin
with linear map (one-dimensional view) of main memory. If we know an address
we can fetch its contents. So, a process residing in the main memory, we set the
program counter to an absolute address of its first instruction and can initiate its
run. Also, if we know the locations of data then we can fetch those too. All of this
stipulates that we know the
Figure : The relocation concept
absolute addresses for a program, its data and process context etc. This means that
we can load a process with only absolute addresses for instructions and data, only
when those specific addresses are free in main memory. This would mean we lose
flexibility with regard to loading a process. For instance, we cannot load a process,if some other process is currently occupying that area which is needed by this
process. This may happen even though we may have enough space in the memory.
To avoid such a catastrophe, processes are generated to be reloadable. In Figure
4.1 we see a process resident in main memory. Initially, all the addresses in the
process are relative to the start address. With this flexibility we can allocate any
area in the memory to load this process. Its instruction, data process context
(process control block) and any other data structure required by the process can be
accessed easily if the addresses are relative. This is most helpful when processes
move in and out of main memory. Suppose a process created a hole on moving
out. In case we use non-relocatable addresses, we have the following very severe
problem. When the process moves back in, that particular hole (or area) may not be
available any longer. In case we can relocate, moving a process back in creates no
problem. This is so because the process can be relocated in some other free area.
We shall next examine the linking and loading of programs to understand the
process of relocation better.
8/2/2019 System Programming Assignment 1......
13/24
EXAMPLE:
There are 5 relocation table entries. The relocation table contains the offsets 0001,
0007,0000F, 001F, 0023.There is one external-table entry. It contains the name-
offset pair {submit, 0000}.
There are no import-table entries.
Name Meaning
length 003316
rlength 5
rtable
0001
0007
000F
001F
0023
xlength 1
xtable summit 0000
ilength 0
itable
code 51 bytes of code
If the code is loaded into memory at location 100016, the operand references forcount, loop, done, array, and sum will still point to locations near zero. Consider
the case of count, which has been relocated to 102816 and so the reference at
location 000116, now at location 100116, should be relocated to contain the value
102816 instead of 002816.
The following algorithm can be applied:
// base = relocation target
for (int i = 0; i < r length; i++) {
word = mem.get(r table[i]+base);
8/2/2019 System Programming Assignment 1......
14/24
word += base;
mem.put(r table[i]+base, word);
}
6. What is linking concept? Explain with example.
The Linking System links separately compiled or assembled subprograms into a
whole program before loading, at loading, or during execution. It can tailor a
program for a specific application. It is for use with Universal Compiling System
(UCS) compilers. It executes on OS 2200 systems.
Purpose:
The Linking System Programming Reference Manual introduces the Linking
System for users unfamiliar with the Linking System and gives basic static and
dynamic linking run streams. This reference manual supplies information on more
advanced topics and assumes you are familiar with that guide. For example, it
discusses individual static linking commands. It is written in a reference format to
facilitate location of information.
Scope:
This reference manual covers the following major topics:
Banking in extended mode
Resolving references, including how files are searched for definitions
Cross-referencing object modules
Static linking
Using fixed-gate shared subsystems
Creating a process from a program written in a high-level language like C++ is
done in several stages, and numerous actors are involved in this creation. Consider
a program P that is written in C++ in several modules M1, Mn (several *.cpp files),and that uses some "build-in" library functions for I/O, string manipulation, etc.
1. Compiler- Separately compiles each one of the program's modules. Denote
the object module resulting in compiling M1 by O1.
2. Linker- Combines several object modules into one, coherent module. Thismodule may be eitherexecutable object, orlibrary of functions (see below).
8/2/2019 System Programming Assignment 1......
15/24
3. Loader - Brings an executable object into the memory and relocates it.
Relocation is an object modification so that it can be loaded at addressdifferent than 0.
Here we describe several linking and loading paradigms, and discuss advantages
and disadvantages of each one of them. This classification will provide us an
ability to analyse our applications and to choose the appropriate linking/loading
strategies for them.
Why Linking Is Needed:
Linking is the process of converting a program from the form produced by a
compiler or assembler into a form that the computer hardware can execute. The
two biggest tasks of linking are to Replace symbolic external references (calls) with the entry point addresses
(Definitions) those references represent. This usually involves combining two or
More separately compiled or assembled object modules (routines) into a new
object
Module or into a whole executing program.
Adjust addresses affected by address relocation.
Linking Functions:
First, let understand what linking means and why it is necessary. Software is madeup of instructions grouped in logical sections called subroutines or functions. Most
functions perform a specific task based on a set of input and output variables.
These individual functions are able to use or call each other using a process called
linking. Calling one function from another function is based on knowing the
address or location of each function. Once this address is known, the calling
function executes or passes control to the called function. When the called function
completes, control is returned to the calling function. Linking is simply the process
of placing the address of a called function into the calling function's code. This is a
fundamental software concept. Now consider a functionFcontains a call to afunctionH, and suppose that these two functions were defined in the same module
(informally, the same *.cpp file). In this case, the linking between the call toHin
F, and the address ofHcan be done by compiler, since both functions are given toit at the same compilation session. Well, this is nice and simple, but it is not always
the case when the modularity is a part of our programming life. Suppose that the
functionsFandHare defined in two different modulesM(F) andM(H). In this
8/2/2019 System Programming Assignment 1......
16/24
case, the compiler can not resolve the problem of linking between the call toHin
F, and the address ofH. Note that the this situation is always the case if thefunctionHwas not written by us, but, for example, is a part of a library of
functions that was created for general use. For example, in our C code, we are
using the function socket (...) which is definitely was not written by us.
In this case, some linking should be done afterthe separate compiling of the
modules by a linker. In general, there are three types of linkers:
Static Linker(orlinkage editor) - linking prior to load time.
Implicit Dynamic Linker(orlinking loader) - linking at load time.
Explicit Dynamic Linker- linking is performed at execution time.
Static Linking:
The simplest form of linking is called static linking. Static linking is used tocombine multiple functions into a single object module. These functions may be a
part of your compiled program modules, and/or a part of various archive libraries
that it uses. The result of static linking may be either an executable object, or anarchive library. The notion of executable object is pretty intuitive -- an executable
object contains specification of a process (or, informally, you can "run" it). The
notion of archive library is novel and well-known for you at the same time -- until
now, you never created one, but you used them many times. For example, if you
are giving -socket as a parameter to your linking command (see your Make file forthe Connector component in the third assignment), then you explicitly specify to
your linking to look for the unresolved references in the lib socket.a archive
library.
As we said, the linker is given your compiled code, containing many unresolved
references to library routines. It also gets archive libraries (for example
/usr/lib/limbs) containing each library routine as a separate module. The linker
keeps working until there are no more unresolved references and writes out a
single file that combines your code and a jumbled mixture of modules containing
parts of several libraries. The library routines make system calls directly, so a
statically linked application is built to work with the kernel's system call interface.
This static linking process takes place once - when the executable module is
created. All internal references to functions within a module are resolved at this
time. In some cases, an entire application is built out of a single statically linked
executable module. In this case, the resulting module is an autonomous unit that
8/2/2019 System Programming Assignment 1......
17/24
can execute without referencing any other modules.
Now, let present the advantages and disadvantages of the static linking:
Advantages
o One linking for many executions.
o Calls into the library routines have a little less overhead since they are
linked together directly.
o Start-up time at program loading is reduced as there is no need to
locate and load the dynamic libraries.
o Possibility to create archive libraries is unique for static linking.
Disadvantages
o Physical memory wasted by duplicating the same library code in
every static linked process can be significant. For example, if all the
window system tools were statically linked, several tens of megabytes
of physical memory would be wasted for a typical user, and the userwould be slowed down by a lot of paging.
o Subsequent versions of the operating system contain better-tuned and
debugged library routines, or routines that enable new functionality.
Static linking locks in the old slow or buggy routines and prevents
access to the new functionality.
o A static-linked program contains a subset of the jumbled library
routines. The library cannot be tuned as a whole to put routines that
call each other onto the same memory page. The whole application
could be tuned this way, but very few developers take the trouble.
o During program development, recompiling for nearly every execution.
As far as we are talking about developing an assignment for our
course, this may be not so important parameter. However, if
compiling of a product that has been developed is taking the whole
night, then it the picture is completely different.
o Since the size of the executable object may be relatively large, the
storage waste is significant, especially in case of infrequently used
program.
Dynamic Linking:
8/2/2019 System Programming Assignment 1......
18/24
A second way to link functions together is through a process called dynamic
linking. With dynamic linking, executable modules created by static linking cancontain references to functions in other modules. All modules that reference each
other must be linked together dynamically when they are executed. Thus the term
dynamic linking.
The central property of the dynamic linking is that even if many processes are using
a particular, dynamically linked function, only a SINGLE copy of this function
appears in the memory, and it is shared by all these processes.
The dynamic linking process consists of two steps. First, the module that contains
the external function must be located. Second, the address of the function within
this module must be found. Once this address is found, the calling module can use
this external function just as if it was linked statically.
Dynamically imported functions are functions that are called from within onemodule but actually reside in another module. In order to import a function, the
developer must provide the name of the module and the function name. These two
items should uniquely identify the imported function.
Dynamic linking occurs when this information is used to find the imported
function's address. If the specified module is found, its headers are examined for
the desired function name. If the specified function is also found, its address is
dynamically placed in the calling module's code
There are two dynamic linking methods:
Implicit Dynamic Linking
Explicit Dynamic Linking
Implicit Dynamic Linking:
With implicit dynamic linking, the process of identifying imported functions is
handled automatically by operating system at runtime. When using implicit
dynamic linking, the importing module contains header fields for each implicitly
imported function. These header fields are generated by a static linker, and eachone of them contain the exporting module and imported function name. The static
linker also adds to the executable object a start-up code to load the required
libraries to the memory at runtime (if they are still not there!), and each library call
goes through a jump table. The first time a routine is actually called, the jump table
is patched to point at the library routine. For subsequent calls, the only overhead is
the indirect reference.
8/2/2019 System Programming Assignment 1......
19/24
Note that the operating system must terminate an application that references an
implicitly linked module or function that can not be found.
The central property of the implicit dynamic linking is that ALL the functions
imported by a process should be loaded into memory before the beginning of its
execution.
Under UNIX or LINUX, use ldd to generate a list ofshared libraries an executableobject depends on. Likewise, under UNIX or LINUX, shared object libraries have
a .so suffix and a version number (*.DLL files in Windows). For example, consider
the UNIX standard program grep:
% ldd /bin/grep
libintl.so.1 => /usr/lib/libintl.so.1
libc.so.1 => /usr/lib/libc.so.1libw.so.1 => /usr/lib/libw.so.1
libdl.so.1 => /usr/lib/libdl.so.1
These libraries include the main system interface library libc.so, the dynamic
linking library libdl.so, wide character support (libw.so), and internationalization
support (libintl.so). Note that on your version of OS the result of ldd /bin/grep may
be different.
Actually, this raises another good reason to use dynamic linking. Statically linked
programs may not be able to take advantage of some internationalization,
networking, and other features that may vary across configurations and
environments.
Explicit Dynamic Linking:
With explicit dynamic linking, the process of linking to imported functions is
handled by the application, not by the operating system. The operating system
provides services that an application can use to explicitly load a module into
memory. Once loaded, another service of the operating system can be used to
extract an imported function's address using its name. If both of these stages are
successful, the application can call the imported function.
The explicit dynamic linking functions return an error if either an exporting
module or an imported function is not found. Thus the application can handle
either of these conditions without terminating. Most large-scale applications
employ both implicit and explicit dynamic linking. The choice of technique
depends on the developer's requirements. From the application user's perspective,
once modules are properly dynamically linked, there is no difference in the two
8/2/2019 System Programming Assignment 1......
20/24
techniques.
While explicit dynamic linking is more complicated to implement from the
developer's perspective, it does offer several advantages over implicit dynamic
linking (see below).
Example of Dynamic Linking:
Linking loader v.s. linkage editor:
8/2/2019 System Programming Assignment 1......
21/24
Linking loader:
Linkage editor:
8/2/2019 System Programming Assignment 1......
22/24
Difference between a linkage editor and loader:
8/2/2019 System Programming Assignment 1......
23/24
Linking loader
Performs all linkingand relocation operations, including automatic
library search, and loads the linked program into memory for execution.
Linkage editor
Produces a linked version of the program, which is normally written to afile or library for later execution. A simple relocating loader(one pass) can be used
to Load the program into memory for execution. The linkage editor performs
relocation of all control sections relative to the start of the linked program. The
only object code modification necessary is the addition of an actual load address to
relative values within the program.
Dr. B.S.Patel (H.O.D) Dr. D. Mitra
(Principal)
8/2/2019 System Programming Assignment 1......
24/24
NOTE:
Submission can be hand written or soft copy.
Do mention the references.