A developer's system compiles a source-language program by parsing it into
an intermediate language (IL) program that is independent of the
architecture or resources of any particular processor. This system
generates a set of machine independent annotations that record attributes
and structure of the IL program such as variable definitions and uses. The
annotations are in the form of a unique graph structure. Further
annotations are used to associate the machine specific optimization
information with each of many different microprocessors. The IL program
and all the annotations are distributed to multiple user systems having
mutually different virtual machines that translate the IL program into
object language for their respective different processors. Optimizers in
the virtual machines select graph edges based on the machine specific
annotations to generate an optimized object program. The translators are
table-driven. Entities in the IL program are keyed to entries in a
replaceable table in each virtual machine.
Il sistema dello sviluppatore compila un programma della lingua d'origine analizzandolo in un programma intermedio di lingua (IL) che è indipendente dall'architettura o dalle risorse di tutto il processor particolare. Questo sistema genera un insieme delle annotazioni indipendenti della macchina che registrano gli attributi e la struttura del programma di IL quali le definizioni e gli usi variabili. Le annotazioni sono sotto forma d'una struttura di grafico unica. Ulteriori annotazioni sono usate per associare le informazioni specifiche di ottimizzazione della macchina con ciascuno di molti microprocessori differenti. Il programma di IL e tutte le annotazioni sono distribuiti ai sistemi multipli dell'utente che hanno macchine virtuali reciprocamente differenti che traducono il programma di IL in lingua di oggetto per i loro processor differenti rispettivi. Gli ottimizzatori nelle macchine virtuali selezionano i bordi del grafico basati sulle annotazioni specifiche della macchina per generare un programma di oggetto ottimizzato. I traduttori sono table-driven. Le entità nel programma di IL sono chiuse a chiave alle entrate in una tabella sostituibile in ogni macchina virtuale.