Question: / / lshell.c / / Your name here as a comment #include / / for I / O functions #include / / for exit (
lshell.c
Your name here as a comment
#include for IO functions
#include for exit
#include for string functions
#include for time functions
int i j;
unsigned short temp, inst, addr;
char buf;
FILE infile;
FILE outfile;
char cp letter;
unsigned short mca;
int mcaindex;
unsigned short start;
int gotstart;
unsigned short Gadd;
char Gptr;
int Gindex;
unsigned short Eadd;
char Eptr;
int Eindex;
unsigned short eadd;
char eptr;
int eindex;
unsigned short Aadd;
int Amodadd;
int Aindex;
unsigned short Vadd;
char Vptr;
int Vindex;
timet timer;
int mainint argc,char argv
if argc
printfWrong number of command line arguments
;
printfUsage: l
;
exit;
display your name, command line args, time
time&timer; get time
printfYOUR NAME HERE s s s
argv argv asctimelocaltime&timer;
Step :
For each module, store header entries into tables with adjusted
addresses and store machine code in mca the machine code array
for i ; i argc; i
infile fopenargvirb;
if infile
printfCannot open s
argvi;
exit;
printfLinking s
argvi;
letter fgetcinfile;
if letter o
printfNot a linkable file
;
exit;
while
letter fgetcinfile;
if letter C
break;
else
if letter S
if fread&addr, infile addr unsigned short
printfInvalid S entry
;
exit;
if gotstart
printfMore than one entry point
;
exit;
gotstart ; indicate S entry processed
start addr mcaindex; save adjusted address
else
if letter G
if fread&addr, infile
printfInvalid G entry
;
exit;
GaddGindex addr mcaindex; save adjusted address
j ;
do get string in G entry
letter fgetcinfile;
bufj letter;
while letter ;
j ;
while j Gindex check for multiple definitions
if strcmpbuf Gptrj
printfMultiple defs of global var s
buf;
exit;
else
j;
GptrGindex strdupbuf; save string
else
if letter E
code missing here
else
if letter e
code missing here
else
if letter V
code missing here
else
if letter A
code missing here
else
printfInvalid header entry c in s
letter, argvi;
exit;
add machine code to machine code array
whilefread&inst, infile
mcamcaindex inst;
fcloseinfile;
Step : Adjust external references
handle E references
for i ; i Eindex; i
for j ; j Gindex; j
ifstrcmpEptri Gptrj
break;
if j Gindex
printfs is an undefined external reference", Eptri;
exit;
mcaEaddimcaEaddi & xf
mcaEaddi Gaddj Eaddi & xff;
handle e entries
for i ; i eindex; i
code missing here
handle V entries
for i ; i Vindex; i
code missing here
Step : Handle A entries
for i ; i Aindex; i
Code missing here. Only statement needed to handle each A entry
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
