Linguaggio assembly: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LiveRC : Annullate le modifiche di 217.133.134.151 (discussione), riportata alla versione precedente di 130.226.139.247
Nessun oggetto della modifica
Riga 18:
|sito_web =
}}
Il '''linguaggio assembly''' (erroneamenteda confusonon confondersi con Assembler, che intendeinvece inindica realtàil programma assemblatore e '''non''' il compilatorelinguaggio), detto anche '''linguaggio assemblativo''', è, tra i [[linguaggio di programmazione|linguaggi di programmazione]], quello più vicino al [[linguaggio macchina]] vero e proprio, pur essendo [[Linguaggio macchina#Assembly|differente]] rispetto a quest'ultimo. Erroneamente viene spesso chiamato "[[assembler]]", anchema secome già accennato quest'ultimo termine identifica solo il [[programma (informatica)|programma]] "assemblatore" che converte il linguaggio assembly in linguaggio macchina.
 
==Caratteristiche generali dell'assembly==
Riga 67:
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 (talvolta denominate ''microcodice'') memorizzate in un'area [[Read only memory|ROM]] ricavata sul silicio del microprocessore.
 
==Struttura==
Riga 208:
</source>
 
Per la maggioranza delle applicazioni ''mainstream'', è ormai convinzione comune nella comunità dei programmatori applicativi che fattori come le ottimizzazioni generate automaticamente dai compilatori nei linguaggi di più elevato livello, l'evoluzione di librerie a loro volta sempre più ottimizzate (almeno in linea di principio) e la sempre maggiore potenza elaborativa delle piattaforme comunemente diffuse rendano meno necessario rispetto al passato il ricorso alla verticalizzazione tramite assembly inline o moduli assembly, anche in favore della [[portabilità]] e leggibilità del codice. Tuttavia, non mancano numerose eccezioni in totale controtendenza rispetto a tale diffusa concezione: in particolare nel mondo dei sistemi dedicati, basato quasi per definizione su un paradigma ben diverso, come ricordato al paragrafo "Non c'è un solo assembly", ma anche in numerose nicchie specialistiche ai margini del ''mainstream'', dai sistemi CAD/CAM al calcolo numerico, alle applicazioni scientifiche di varia natura, fino allo sviluppo di driver e altro software di sistema.
Dato che oramai la potenza dei PC è elevatissima e che i compilatori hanno una grande quantità di ottimizzazioni, i programmatori "normali" hanno sempre meno la necessità di interfacciarsi a basso livello, a favore della [[portabilità]] e leggibilità del codice.
 
==Strutture di controllo in Assembly x86==