You are on page 1of 2

81309132032

Ex:No:10

IMPLEMENTATION OF TARGET CODE GENERATION


#include<stdio.h>
#include<conio.h>
FILE *fp;
char str[10];
char reg[10][3]={"R1","R2","R3","R4"};
char stk[10][3],t[3],arg1,arg2;
int top=-1,n=-1,nreg=0;
char opr[5][5]={"ADD","SUB","MUL","DIV"};
char sym[10]={'+','-','*','/','='};
struct st
{
char left[2];
char right[10];
}s[10];
void GetOperator(int x)
{
int i;
for(i=0;;i++)
{
if(s[x].right[1]==sym[i])
break;
}
printf("%s",opr[i]);
}
main()
{
int i,j,k;
clrscr();
printf("\nTARGET CODE GENERATION");
printf("\n----------------------");
printf("\n\nEnter the number of expressions:\t");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",s[i].left);
scanf("%s",s[i].right);
}
printf("\n EXPRESSIONS:\n");
for(i=0;i<n;i++)
{
printf("%s=%s\n",s[i].left,s[i].right);
}
printf("\n\nTARGET CODE...\n");
for(i=0;i<n;i++)
{
if(isalpha(s[i].right[0]))

81309132032

printf("MOV %c,%s\n",s[i].right[0],reg[nreg++]);
if(!isalpha(s[i].right[1]))
{
GetOperator(i);
}
if(isalpha(s[i].right[2]))
{
GetOperator(i);
}
if(isalpha(s[i].right[2]))
{
printf("\t%c,%s\n",s[i].right[2],reg[nreg-1]);
}
printf("MOV %s,%s\n",reg[nreg-1],s[i].left);
}
return 0;
}

You might also like