Implementation of Pass TWO of Linking Loader


/*PASS TWO OF LINKING LOADER*/

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

void main()

{

FILE *in,*address;

int search(char sym[10]);

char progaddr[10];

int data[100],mem[100],i=0,q,d=0,value,j;

int csaddr,execaddr,cslth;

char type[10],addr[10],obj[10],mflag[10],op;

in=fopen(“OBJECT.TXT”,”r”);

address=fopen(“ADDRESS.TXT”,”r”);

clrscr();

fscanf(address,”%s”,progaddr);

fclose(address);

csaddr=atoi(progaddr);

execaddr=atoi(progaddr);

fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);

while(!feof(in))

{

cslth=atoi(obj);

while(strcmp(type,”E”)!=0)

{

fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);

if(strcmp(type,”T”)==0)

{

mem[i]=atoi(addr)+csaddr;

data[i]=atoi(obj);

i++;

}

else if(strcmp(type,”M”)==0)

{

op=mflag[0];

for(j=1;j<strlen(mflag);j++)

mflag[j-1]=mflag[j];

mflag[j-1]=”;

value=search(mflag);

q=d+atoi(addr)/3;

if(op==’+’)

data[q]=data[q]+value;

else

data[q]=data[q]-value;

}

}

d=cslth/3;

execaddr=csaddr+atoi(addr);

csaddr=csaddr+cslth;

fscanf(in,”%s\t%s\t%s\t%s”,type,addr,obj,mflag);

}

fclose(in);

q=(execaddr-atoi(progaddr))/3;

printf(“Program loaded in memory is ready for execution\n”);

printf(“Execution starting address:%d\n”,execaddr);

printf(“ADDRESS\tDATA\n”);

for(j=0;j<i;j++)

printf(“%d\t%d\n”,mem[j],data[j]);

gotoxy(1,q+4);

getch();

}

int search(char sym[10])

{

FILE *fp;

char s1[10],s2[10],s3[10],s4[10];

fp=fopen(“ESTAB.TXT”,”r”);

while(!feof(fp))

{

fscanf(fp,”%s\t%s\t%s\t%s”,s1,s2,s3,s4);

if(strcmp(s2,sym)==0)

{

fclose(fp);

return(atoi(s3));

}

}

fclose(fp);

return 0;

}

OUTPUT:

Program loaded in memory is ready for execution

Execution starting address:4009

ADDRESS DATA

4000    6

4003    10006

4006    9

4009    6

4012    10006

4015    9

One thought on “Implementation of Pass TWO of Linking Loader

  1. thanks a lot for the code ,there are two errors if I run the code

    c:73: error: missing terminating ” character
    c:115: error: `gotoxy’ was not declared in this scope

    I would be very delightful if u look into code once,or is it my mistake plz just verify it
    pls reply me as soon as possible
    thank u

Comments are closed.