Dopo aver analizzato la distribuzione delle modalità d’indirizzamento verso la memoria, e prima di mettere in relazione gli ultimi argomenti trattati, è necessario focalizzare l’attenzione sulle statistiche relative ai valori immediati, componente di fondamentale importanza che ha un notevole peso nell’ISA e nella definizione della struttura degli opcode di un’architettura.
I valori immediati sono interi che, come sappiamo, possono essere dotati di segno oppure no. Nell’ambito di questa ricerca si è assunto, per una questione di semplicità, che fossero tutti quanti dotati di segno, a prescindere dall’istruzione che ne facesse uso.
Ciò …
Dopo aver discusso della distribuzione e frequenza del numero di operandi, questa volta puntiamo l’attenzione alle modalità d’indirizzamento verso la memoria che sono utilizzate dalle istruzioni dalle architetture x86 e x64.
E’ chiaro che non tutte le istruzioni hanno bisogno di accedere alla memoria, per cui le statistiche riguarderanno soltanto quelle che effettivamente ne faranno uso.
In particolare queste famiglie di microprocessori possono eseguire un solo accesso alla memoria, fatta eccezione per alcune particolari istruzioni “legacy” (quelle che operano sulle cosiddette “stringhe”), che consentono di specificare un operando sorgente (in lettura) e …
Le istruzioni, come sappiamo, sono composte dallo mnemonico, che identifica il tipo di azione svolta, accompagnato eventualmente da uno o più operandi che utilizza come sorgente/i e/o come destinazione.
In quest’articolo ci occuperemo delle statistiche relative al numero di operandi, senza tenere conto dello mnemonico per il momento, di cui ci occuperemo nella parte finale della serie.
x86 e x64 condividono buona parte dell’architettura, con leggere differenze a livello di ISA, ma la struttura delle istruzioni rimane sostanzialmente la stessa, come abbiamo in parte avuto modo di vedere dal precedente articolo che …
Dopo l’analisi e i freddi numeri riportati nei precedenti articoli, passiamo a verificare il codice x86 e x64, dando un’occhiata ad alcuni spezzoni di codice e mostrando come si comportano le due architetture quando c’è da effettuare lo stesse elaborazioni, cercando riscontro a quanto detto finora.
La scelta del codice deve, però, soddisfare alcuni criteri. Dovrebbe offrire uno spaccato abbastanza comune, senza perdersi in listati chilometrici che disperdono l’attenzione e l’interesse, ma soprattutto è necessario recuperare spezzoni “uguali”, che elaborino sostanzialmente la stessa cosa, in modo da rendere semplice il confronto …
Proseguiamo con l’analisi del codice delle ISA x86 e x64 dal punto di vista statistico, questa volta puntando l’attenzione sulla distribuzione delle varie dimensioni delle istruzioni.
Ricordiamo che entrambe le ISA presentano opcode di lunghezza variabile, che vanno da 1 a un massimo di 15 byte. In realtà il capostipite della famiglia, l’8086, non aveva un limite vero e proprio per la lunghezza di un’istruzione, che non fosse rappresentato dalla dimensione del segmento del codice. A partire dall’80286, però, Intel ha imposto a 15 byte la lunghezza massima di un opcode.
Per …
La lunga serie sull’analisi dell’aspetto “legacy” di x86 e x64 si era conclusa con l’annuncio (nei commenti) di una nuova serie di articoli che avrebbero trattato queste due ISA dal punto di statistico; è arrivato il momento di mantenere fede alle promesse.
Esistono già numerosi articoli e pubblicazioni scientifiche che hanno affrontato l’argomento, ma quelli che seguiranno sono frutto di particolari studi effettuati su diversi aspetti delle istruzioni di queste architetture dal punto di vista quantitativo, ma che offrono spazio anche ad alcune riflessioni.
Parlo non a caso di architetture, distinguendo quindi …
Febbraio sembra un mese particolarmente rilevante per i linguaggi di programmazione. Infatti dopo Thompson e Wirth, domani (22 febbraio) sarà Thomas Eugene Kurtz a festeggiare gli anni: ben 85!
Thomas E. Kurtz
Ma perché Kurtz è così importante nella storia dei linguaggi di programmazione? La risposta è semplice: si tratta del co-autore, insieme a John George Kemeny, del Dartmouth Time-Sharing System a cui è indissolubilmente legata la creazione del BASIC (Beginner’s All purpose Symbolic Instruction Code).
Nato ad Oak Par (Illinois) nel 1928, Kurtz consegue la laurea allo Knox College nel 1950 e …
Ieri sera Sony ha svelato le proprie carte presentando la quarta generazione della sua console casalinga, che ovviamente verrà chiamata Playstation 4. Microsoft temporeggia ancora, mentre Nintendo questa volta ha anticipato tutti, avendo messo in vendita la sua Wii U già da un po’ di mesi.
Sebbene le specifiche non siano ancora ben chiare e definite, quelle di massima (anche della prossima XBox) che circolano ormai da tempo, e in parte rivelate, dovrebbero rispecchiare ciò che i giocatori si troveranno in mano (e si trovano già per la Wii U).
Il quadro …
La scorsa settimana abbiamo reso omaggio ai 70anni di Ken Thompson, creatore di Unix (insieme a Dennis Ritchie) e del linguaggio “B”.
Oggi (15 febbraio), invece, le candeline si spengono per il professore svizzero Niklaus Wirth, padre di un altro linguaggio fondamentale nella storia della programmazione: il Pascal.
Niklaus Wirth
Nato il 15 febbraio 1934 a Winterthur (Zurigo), Wirth si laurea in Ingegneria Elettronica all’età di 25 anni presso il più rinomato politecnico elvetico, l’ETH di Zurigo. Successivamente consegue prima un Master of Science presso l’Università Canadese di Laval e poi, nel 1963, …
Qualche giorno fa mi sono deciso ad approfittare dell’offerta di Microsoft, ormai con le ore contate, aggiornando quindi i miei due PC (desktop e sub-notebook). Il processo è filato tutto liscio e sul desktop, in particolare, avevo già quasi tutto funzionante nel giro di un paio d’ore (il sub-notebook ha richiesto circa il doppio del tempo, avendo un hardware decisamente inferiore) , anche se, al solito, è rimasto qualcosa da sistemare manualmente per driver o applicazioni.
Nella fase finale dell’installazione mi era stata chiesta l’e-mail relativa all’account di Microsoft (ex Live), …