|
[ ] [ ] [ ] [ ] [ ]
Forse è un errore cominciare a parlare di questo argomento proprio nella prima lezione, inquanto è di un livello abbastanza alto. Ma io sono convinto che una infarinatura di Assembler sia assolutamente necessaria. L'Assembler è uno dei linguaggi di programmazione più usati da Hacker. Non spaventatevi se non capite tutto, non è colpa vostra, ma della difficoltà dell'argomento oppure del mio modo freddo di spiegare.
Un linguaggio assemblatatore puro è un linguaggio in cui ogni istruzione produce esattamente un'istruzione macchina. C'è quindi una corrispondenza uno ad uno fra istruzioni macchina e istruzioni del linguaggio assemblatore. Si, lo so, non è semplice capire, ma cercherò di essere il più chiaro possibile. Dovete sapere, che la macchina è composta da tanti microcircuiti, i quali grazie ad impulsi elettrici, riescono a svolgere operazioni. (Ok, fin qui ci siamo, dovete sapere che non è facile spiegare!!)
Insomma, ci sono diverse istruzioni stampate su circuiti, istruzioni che aspettano solo di essere eseguite, sono le istruzioni a livello macchina. Quando noi scriviamo un'istruzione in un linguaggio ad alto livello, (ad esempio il C o il PASCAL!) noi attiviamo tanti circuiti, in modo tale da far avvenire tante istruzioni a livello macchina. Quindi ad un'istruzione di un linguaggio di alto livello, corrispondono tante istruzioni di linguaggio macchina. Invece, quando noi scriviamo un'istruzione con un linguaggio Assembler, noi scriviamo e quindi azioniamo una ed una sola istruzione a linguaggio macchina. Ecco perché si dice che il linguaggio Assembler è il linguaggio macchina. Beh, credo che di essere stato alquanto chiaro! Qualcuno potrebbe dirmi: "Ma allora perché non scriviamo i nostri programmi in Esadecimale (Non vi spaventate, poi vi parlerò di numeri esadecimali, binari, ottali
.(Forse J) che è il vero linguaggio macchina?". Il vero motivo è davvero molto semplice, infatti, programmare in linguaggio esadecimale, sarebbe troppo difficile!!! Pensate a programmare con istruzioni tipo: 35AE712, EAC452
.
Sarebbe davvero molto difficile ricordare le istruzioni, invece tramite un traduttore, si associa ad ogni codice esadecimale un nome simbolico. Infatti è facilissimo ricordare i nomi delle quattro operazioni fondamentali: addizione, sottrazione, moltiplicazione e divisione associati a: ADD, SUB, MUL e DIV. Ma provate a ricordare i codici esadecimali di queste istruzioni, diventereste pazzi!!!
Cosa sono quindi i traduttori?
I traduttori sono programmi che convertono il linguaggio scritto da un utente in un altro linguaggio. Nel caso dell'Assembler, in linguaggio esadecimale. Il linguaggio in cui è scritto il programma originale, si chiama linguaggio sorgente e il linguaggio in cui è convertito si chiama linguaggio oggetto. Il linguaggio assemblatore, ha una caratteristica molto importante che lo contraddistingue da un linguaggio ad alto livello e cioè che ha accesso a tutte le istruzioni e le funzioni presenti sulla macchina. (Proprio per questo, la maggior parte dei virus sono fatti in Assembler!) Insomma, tutto quello che si può fare in linguaggio macchina, lo si può fare in linguaggio assemblatore, ma molte istruzioni, registri e caratteristiche di ogni tipo, non sono disponibili ai programmatori di linguaggi di alto livello. È importante anche ricordare che i programmi scritti in linguaggio assemblatore, funzionano solo su una famiglia di macchine, mentre i linguaggi d'alto livello, funzionano ovunque. Questo proprio perché andiamo a programmare in un linguaggio che rispecchia l'architettura della macchina e le architetture sono diverse a seconda del produttore dell'hardware. Infine, bisogna dire che programmare in linguaggio assemblatore è molto più difficile (Ma davvero tanto!!) di programmare in un linguaggio d'alto livello.
[ ] [ ] [ ] [ ] [ ]
[ :: Indice Corso :: ]
|