
Finora abbiamo visto parecchi aspetti delle istruzioni, ma non ci siamo mai soffermati sull’effettivo tipo di lavoro che eseguissero. Come anticipato nel precedente articolo, arriviamo finalmente a visionare le statistiche delle istruzioni x86 e x64 dal punto vista degli mnemonici.
Prima di procedere preciso che tutte le istruzioni condizionali sono state accorpate, eliminando la condizione di controllo, in modo da ottenere delle statistiche sul “macro-tipo” di operazione svolta, piuttosto che sulla specifica condizione. Non saranno, quindi, visibili istruzioni come JC, ma al suo posto sarà presente soltanto J, che racchiude anche …

Torniamo a questa serie di articoli, che è rimasta da troppo tempo nel cassetto, ma che merita di essere conclusa con le ultime parti. In questo, in particolare, analizzeremo le statistiche relative al numero degli argomenti di un’istruzione, che sono messi in relazione con le varie modalità d’indirizzamento.
Come sappiamo, ogni istruzione può avere un numero variabile di argomenti, da nessuno fino a un massimo di 4 (per alcune istruzioni AVX; l’ultima estensione SIMD di Intel). Ogni argomento non può essere di qualunque tipo, ma esistono delle regole ben precise. Ad …

Chi ha avuto la fortuna di attraversare il periodo che va dagli anni ’80 fino alla prima metà dei ’90 attingendo al mondo dell’informatica ha potuto godere di un’esperienza irripetibile, nel pieno impulso pionieristico che ha reso il computer un elemento domestico, familiare, che permea ormai l’esistenza nostra e dell’intera società in cui viviamo.
E’ in questo contesto che s’inquadra l’operato di un’azienda che non ha certo bisogno di presentazioni: la beneamata Commodore, che ha contribuito in maniera preponderante, a mio modesto avviso, a tutto ciò, forte anche del pensiero e …

La presentazione delle console di prossima generazione ha messo in subbuglio un mondo, quello dell’intrattenimento digitale, che già da tempo aveva mostrato segni di cedimento, in quanto il ciclo di vita degli attuali dispositivi è sostanzialmente giunto al termine, per lo meno per quanto riguarda l’hardware.
Il mercato, insomma, è saturo. Un videogiocatore generalmente si trova già a casa una o più console, e non ha certo intenzione di comprarne un’altra, se non un nuovo modello, dotato, quindi, di caratteristiche hardware molto più elevate rispetto a quanto già possiede. Aspetta, insomma, …

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 …