KULT Underground

una della più "antiche" e-zine italiane – attiva dal 1994

L’assembler alla riscossa

3 min read

L’assembler alla riscossa

Povero assembler! Come è stato trascurato nell’ultimo decennio! E pensare che dal momento in cui sono nati i primi computers fino a una o due decine di anni fa, l’assembler (o meglio il linguaggio macchina)
è stato praticamente l’unico linguaggio utilizzato, l’unico strumento a disposizione dei programmatori. Ora, per la gioia di molti, esistono linguaggi ad alto livello; partendo dal classico Basic, C o Pascal, da diversi anni le maggiori software house stanno mettendo sul mercato strumenti di sviluppo a livello sempre più alto, cominciando dal famoso Clipper e dai recenti linguaggi sempre più visuali fino ad arrivare ai CASE.
Indubbiamente questo progresso dello stile di lavoro dei programmatori non può che portare vantaggi alla maggior parte degli sviluppatori per vari motivi: è più semplice programmare e non sono richieste capacità tecniche particolari; le applicazioni possono essere scritte in tempi veramente ridotti, in modo da poter lasciare al programmatore più tempo da dedicare allo studio del problema ed ottenere un prodotto di qualità sempre maggiore.
A questo punto, una domanda è lecita: è possibile che si possano ottenere tutti questi vantaggi senza avere degli aspetti negativi?
Per dare una risposta a questo quesito proviamo ad osservare i sistemi operativi o i programmi più recenti. Qual’è l’hardware minimo richiesto? Almeno un 486 con 8 Mega di RAM. E pensare che solo qualche anno fa riuscivo a lavorare tranquillamente con Windows sul mio 8086 con 512Kb di RAM. Questa richiesta esagerata di risorse è forse giustificata da un altrettanto aumento delle potenzialità dei programmi?
Il mio parere è che ci si stà sempre più abituando alla comodità dei nuovi strumenti di sviluppo senza pensare che, così facendo, non si sfruttano assolutamente le potenzialità della macchina su cui si lavora. La soluzione migliore sarebbe quella di fare un salto all’indietro di qualche anno e tornare ad utilizzare il buon vecchio C o, ancora meglio, l’assembler.
E’ proprio per dimostrare le potenzialità offerte da quest’ultimo linguaggio (in termini di velocità, dimensione del codice e controllo sulla macchina) che vi propongo il mio ultimo programma.
Si tratta di una piccola demo, scritta interamente in assembler e lunga meno di 1Kb, che permette di navigare in uno spazio montuoso tridimensionale (molto simile a Mars, il programma pubblicato nell’articolo Giant’s Killer di Febbraio 1995, ma col codice 5 volte più corto). Il programma disegna automaticamente la mappa con le altezze delle montagne dopo di chè comincia a visualizzare su schermo il paesaggio in movimento, colorando in verde le montagne e in blu gli avvallamenti con l’acqua.
L’algoritmo usato è abbastanza semplice: si considera la parte del paesaggio davanti al punto di osservazione; per ciascun punto sulla mappa si conosce la distanza dall’osservatore e l’altezza; si applica la trasformata prospettica e si va ad accendere un punto sullo schermo alle coordinate ottenute. E’necessario prendere qualche altro piccolo accorgimento per evitare sfarfallii sullo schermo.
Il programma anche è dotato di un sistema anti-curioso, cioè una piccola protezione che fa bloccare il computer qualora si tenti di eseguire passo-passo il programma con un debugger o si tenti di cambiare il mio nome nei credits.
L’assembler ha tutte le caratteristiche per un programma simile.
E’infatti richiesta molta velocità (per avere un frame rate alto), un codice compatto (infatti è lungo meno di 1Kb, potere dell’assembler!) e un buon controllo sulla macchina (per la piccola protezione anti-curioso). Ma ora basta parlare e fate commutare il microswitch sinistro del vostro mouse in questo punto per scaricare il demo ed avere un esempio di assembler ottimizzato.
Va comunque ricordato che già da diversi mesi avete a portata di mano un esempio di programma a mio avviso ben ottimizzato: il Maniac Viewer
(cioè il motore di KULT), il quale si accontenta di un misero 286 per potere funzionare. Questo è il tipico esempio di come sia possibile scrivere programmi “potenti” senza dover esigere un hardware da milionari.

Thomas Serafini

Commenta