No, i set di istruzioni non sono "standardizzati" in modo da poter produrre assembly adatti - o semplicemente mappabili a - ARM, x86, PPC, MIPS, Itanium, Sparc, ... (e le loro varianti ).
I compilatori di codice nativo sono bestie piuttosto complesse. Non tutto il lavoro che fanno è specifico del processore. Tutto il lexing / parsing dipende dalla lingua ma non dai chip. Alcuni passaggi di ottimizzazione sono anche indipendenti dall'hardware, ma probabilmente non tutti - ad es. la giusta dimensione del codice v.s. i compromessi sulla velocità grezza potrebbero dipendere dal target.
A un certo punto, se stai producendo codice nativo, dovrai conoscere i dettagli del chip che hai scelto come target. È necessario essere consapevoli dei loro "quirks" (proprietà di coerenza della memoria per esempio) e set di istruzioni completi per produrre un flusso di istruzioni che sia sia corretto che ragionevolmente efficiente.
Anche se ti limiti a un set di istruzioni (ad esempio x86_64), diverse marche di chip hanno estensioni diverse che devono essere considerate. Diversi modelli della stessa marca hanno anche differenze nell'insegnamento (nuove funzionalità aggiunte, a volte vecchie funzionalità rimosse). Attenersi al "minimo comune denominatore" potrebbe funzionare, ma ti mancherai un sacco di cose.
Significa che si esegue una completa riscrittura del compilatore per ogni nuova serie di istruzioni o estensione che raggiunge il mercato? Ovviamente no. Quelli sono cambiamenti incrementali, a volte solo a "file di descrizione della macchina" o qualsiasi cosa il compilatore usi per modellare il set di istruzioni di destinazione.
Tuttavia, l'introduzione di un nuovo ISA non è un compito banale e richiede una conoscenza dettagliata del target.
Se hai intenzione di creare autonomamente un compilatore, dai un'occhiata a LLVM . È probabile che tu lo usi per la parte "che emette codice nativo" almeno, qualunque sia la lingua che stai cercando di compilare.
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.