ELEMANIA
PIC16F690 - Assembly vs. Alto livello
Linguaggio assembly

Nelle lezioni precedenti abbiamo visto come si programma il PIC usando il linguaggio assembly. In realtà l'assembly non è un unico linguaggio, ma piuttosto una classe di linguaggi di programmazione, uno per ogni famiglia di microprocessori. Dunque esiste un linguaggio assembly per il PIC (a sua volta leggermente diverso a seconda del particolare tipo di PIC utilizzato) e tale linguaggio sarà in generale completamente diverso dall'assembly dello Z80 o di un qualsiasi altro microprocessore.

Infatti le istruzioni in assembly corrispondono univocamente a istruzioni nel linguaggio macchina del microprocessore. Rispetto a quest'ultime, la programmazione in assembly offre il vantaggio di essere più facile da utilizzare, in quanto non richiede la memorizzazione di codici operativi binari, ma solo di istruzioni mnemoniche letterali.

Per esempio BCF STATUS, RP0 nel linguaggio assembly del PIC corrisponde al codice binario 0100 101 0000011  (ed è senza dubbio più semplice da ricordare!).

Tuttavia resta il fatto che, a parte la maggiore semplicità di uso, la programmazione in linguaggio assembly equivale in tutto per tutto a programmare nel linguaggio macchina del microprocessore.

Linguaggi ad alto livello

I linguaggi assembly vengono anche denominati linguaggi a basso livello, per contrapporli ai cosiddetti linguaggi di programmazione ad alto livello, quali per esempio il C, il Basic, il Pascal etc.

A differenza dell'assembly, i linguaggi ad alto livello sono piuttosto standardizzati (anche se non completamente), cioè le loro istruzioni sono praticamente le stesse qualunque tipo di microprocessore si stia utilizzando. La ragione di questo fatto è che le istruzioni in un linguaggio ad alto livello (per esempio il C) non corrispondono univocamente a istruzioni nel linguaggio macchina del microprocessore. Anzi, normalmente, una singola istruzione ad alto livello viene codificata (cioè tradotta dal compilatore) in una serie più o meno lunga di istruzioni in linguaggio macchina. In generale dunque un programma scritto ad alto livello è più breve e compatto rispetto al corrispondente programma in assembly. Si consideri a questo proposito l'esempio mostrato in figura che mette a confronto una porzione di codice in Basic con la corrispondente traduzione in assembly:

Si presti tuttavia attenzione al fatto che, sebbene il programma scritto in un linguaggio ad alto livello sia in generale più compatto di quello scritto in assembly, ciò non corrisponde in generale a una minore occupazione di memoria, anzi. Infatti solitamente la traduzione in linguaggio macchina da linguaggio ad alto livello è meno efficiente di quella da assembly a linguaggio macchina e dunque genera codice più pesante e spesso anche più lento da eseguire.

Un altro evidente vantaggio della programmazione ad alto livello sta nell'uso di istruzioni più semplici da memorizzare e, soprattutto, da utilizzare rispetto alla programmazione in assembly. Inoltre il programma risulta più ordinato e strutturato e dunque più facile da modificare e da correggere.

Linguaggi ad alto livello vs. assembly: vantaggi e svantaggi

In estrema sintesi i vantaggi della programmazione ad alto livello rispetto alla programmazione in assembly sono i seguenti:

D'altra parte vi sono anche vantaggi nel programmare in assembly:

La scelta fra le due diverse filosofie di programmazione dipende dal contesto in cui si opera e dai propri obbiettivi. Per esempio un progetto collaborativo fra più programmatori probabilmente beneficerà della maggiore semplicità di uso di un linguaggio ad alto livello, rispetto all'assembly. Viceversa se è necessario massimizzare l'efficienza di un programma, sarà preferibile scriverlo in assembly.

In tutti i casi rimane possibile una terza via e cioè quella di scrivere in linguaggio ad alto livello la maggior parte del programma e di usare l'assembly per quelle parti (routine) dove la velocità e l'efficienza sono fattori critici.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it