1.4 La memorizzazione delle informazioni

Le informazioni possono essere memorizzate all’interno della memoria centrale in due modalità differenti (endianess):

Sui PC (architetture Intel X386 e compatibili) e sulle piattaforme Digital, le informazioni sono memorizzate secondo la convenzione little endian, mentre tutte le altre piattaforme (Motorola, IBM, Sun) utilizzano la convenzione big endian.

Esistono anche dei processori che permettono di passare da un tipo di memorizzazione all’altro. Comunque GNU/Linux adotta il tipo di memorizzazione tipico dell’architettura sulla quale è installato e mantiene sempre quello.

È possibile verificare l’endianess utilizzata dal proprio sistema, attraverso un semplice programma, analogo a quello di seguito riportato (sorgente C):

#include <stdio.h>
int endianess(void)
/* Return value:
*   0 : big endian
*   1 : little endian
*/
{
    short int TestValue, RebuiltValue;
    char *pValue;
    TestValue = 0xABCD;
    pValue = (char*)&TestValue;
    RebuiltValue = (pValue[1] << 8) + (0x00ff & pValue[0]);
    return (TestValue == RebuiltValue);
}
main()
{
    if (endianess() == 0)
       printf("Il sistema utilizza big endian.\n");
    else
       printf("Il sistema utilizza little endian.\n");
    return(0);
}
Una volta salvato in un file, ad esempio testend.c, il programma può essere compilato con il comando

 
$ gcc testend.c -o testend  
e quindi fatto eseguire. Un esempio del risultato dell’esecuzione del programma, su di un PC (Intel Pentium III) è riportato di seguito

 
[daniele@Zeus ~]$ ./testend
Il sistema utilizza little endian.
[daniele@Zeus ~]$ _