Linguaggio assembly: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
→‎RISC e CISC: sposto sopra...
Riga 42:
 
Ecco allora che la possibilità di utilizzare un microcontroller con limitatissime risorse di memoria [[Read only memory|ROM]] e [[RAM]] scrivendo il [[firmware]] integralmente in assembly diventa essenziale al fine di minimizzare i costi, l'ingombro in piastra, la suscettibilità elettromagnetica, aumentando anche l'affidabilità (processori più "datati" hanno un incolmabile vantaggio in termini di milioni di ore di test e funzionamento sul campo, ossia la "merce" di gran lunga più preziosa per i sistemi embedded variamente critici) ed ottimizzando numerosi altri fattori.
 
==RISC e CISC==
Il linguaggio assembly costituisce il cosiddetto [[instruction set|ISA]] (''Instruction Set Architecture'') di un processore.
I diversi ISA possono essere divisi in due grandi gruppi: i [[Reduced instruction set computer|RISC]] (''Reduced Instruction Set Computer'') e i [[Complex instruction set computer|CISC]] (''Complex Instruction Set Computer''). Il primo gruppo tende ad avere operazioni semplici e veloci, con grande abbondanza di [[registro (informatica)|registri]] per memorizzare i risultati intermedi. Il secondo mette a disposizione del programmatore istruzioni più complesse, che a volte mimano quelle dei linguaggi di livello più alto (ad esempio, la copia di stringhe nei processori x86). In entrambi i casi, i migliori set di istruzioni tendono ad essere quelli cosiddetti ''ortogonali'', dove i diversi [[metodo di indirizzamento|metodi di indirizzamento]] e i diversi registri possono essere usati indifferentemente in tutte le istruzioni. Famosi set di istruzioni ortogonali sono quelli del Motorola 68000 (CISC) e del [[Architettura MIPS|MIPS]] (RISC). L'ISA dei processori Intel x86 era originariamente ben poco ortogonale, ed è andata via via migliorando.
 
La distinzione tra ''set'' di istruzioni RISC e CISC è oggi un po' sfumata, perché la maggior parte dei processori consumer sono oggi dei [[CRISP]], cioè un misto fra i due. Inoltre, alcuni processori traducono l'ISA originale in un set di istruzioni interno, per ragioni diverse e con modalità diverse:
* nel caso dell'[[Intel]] [[Pentium 4]] e dell'[[Advanced Micro Devices|AMD]] [[Athlon]], è per liberarsi dalle limitazioni causate da un'ISA retrocompatibile ormai arcaica, e la conversione è eseguita direttamente da hardware dedicato che effettua la necessaria ''decodifica'';
* nel caso dei processori [[Transmeta]], è per poter "tradurre" ISA di altri processori esistenti come se fossero proprie, e la traduzione è fatta da qualcosa di concettualmente molto simile a ''routine'' firmware (denominate ''microcodice'') memorizzate in un'area [[Read only memory|ROM]] ricavata sul silicio del microprocessore.
 
==Struttura==