Originariamente inviato da Phobos21
Non so se ho una macchina MIPS ma non penso (ho linux in architettura i686, non so se è quello che si intende, in ogni caso come faccio a sapere che tipo di macchina è?)
No, i PC "normali" sono macchine con architettura Intel x86 IA32 o IA64.
Se non è MIPS ma è un altra architettura, come posso far compilare un codice in MIPS? Ci sono dei modi che forzano la compilazione in mips?
Non ne ho idea, non ho mai usato gcj.
Ditemi di si, mi serve per vedere come java "traduce" le varie istruzioni in linguaggio assembly, proprio per imparare questo linguaggio che è un po' difficile se non si fa un po' di pratica oltre alle cose che vengono scritte sul libro.
Credo che imparare l'assembly in questa maniera sia piacevole e utile come dare testate ad un muro. Il codice che genera un compilatore Java è un gran casino perché deve supportare tutte le facility che Java mette a disposizione (classi, garbage collector, eccetera), e soprattutto se è ottimizzato è difficile trovare la corrispondenza istruzione Java-gruppo di istruzioni assembly, perché il paradigma di programmazione è completamente diverso (le classi e i metodi Java devono essere trasformati in una sequenza di istruzioni con salti, rendendo irriconoscibile la struttura originaria) e le ottimizzazioni modificano anche pesantemente il codice (spostandolo prima o dopo, effettuando loop unrolling eccetera) per renderlo più veloce/più compatto pur mantenendo globalmente la medesima funzionalità.
Insomma, per programmare in assembly devi pensare in maniera diversa rispetto al Java, visto che, come già detto, il paradigma di programmazione è profondamente differente.