Originariamente inviato da tirif4
Scusatemi per il disturbo, ma avrei un dusperato bisogno di aiuto dovrei fare un programma in linguaggio C che mi legga un programma in MIPS e che me lo converta in linguaggio x86.
Io dovrei fare questo solo per la funzione di Fibonacci.
Ho gia scritto la funzione sia in Mips che in x86 ed entrambe sono funzionanti.Io ho gia fatto un programma che riesce a fare tutto cio e il funzionamento base è questo:
faccio leggere il programma MIPS riga per riga e attraverso vari IF a seconda di quello che legge io gli faccio scrivere il corrispettivo in x86.
Ad esempio se legge
--beq $t1 $0 end
io gli faccio scrivere --CMP CX 0h
--JE end
attraverso
if ((d[0]>='a')&&(d[0]<='z')||(d[0]>='A')&&(d[0]<='Z'))
{
fputs("CMP ",fp2);
if (strcmp(b,t1)==0)
{
fputs("CX ",fp2);
if(strcmp(c,zero)==0)
{
fputs("0h\n",fp2);
fprintf(fp2,"JE %s\n",d);
}
}
}
Purtoppo al professore tutto questo non va bene perchè dice che è troppo poco generale e che tutto il mio programma puo essere riassunto cosi:
se leggi questo programma scrivi questo.
VI PREGO AIUTATEMI DATEMI QUALCHE DRITTA.
Grazie in anticipo
Ti ha detto che è poco generale perchè il tuo programma funziona SOLO per quel particolare caso mentre lui vuole che il tuo programma preso come input un qualsiasi programma MIPS restituisca un listato corrispondente x86.Un caso semplificato potrebbe essere quello in cui il tuo programma generalizzato comprenda solo il tipo di istruzioni che ci sono nella funzione fibonacci, in altre parole se gli passi come listato una funzione MIPS che fa un'altra cosa ma usa lo stesso set di istruzioni presente nella funzione fibonacci allora il prog deve essere in gardo di produrre l'equivalente x86.Questo secondo caso penso sia quello che intende il tuo prof.