Uninformed: Informative Information for the Uninformed

Vol 1» 2005.May


Endianness

Endianness refers to the order by which any multi-byte data is stored. There exists two commonly referred conventions: little and big. Little endian systems, which includes the IA-32 architecture, store data starting with the least significant byte, through the most significant byte. Big endian systems do the opposite, storing the most significant byte first. For example, the value 0x11223344 would be stored as 0x44332211 on a little endian system, and 0x11223344 on a big endian system.

Notice the value in <operand2> is 0x01005338 and the remainder of <opcodes> is 0x38530001. If <operand2> is rewritten and expressed in little endian order one can see these values are equal.

0x01005338, rewritten for clarity: 0x01 0x00 0x53 0x38
                                      |    |    |    |
                                      |    |    +----|-+
                                      |     +--------|-|-+
                                      +--------------|-|-|-+
                                                     V V V V
                                                  0x38530001
With this information, one can see exactly how the processor is instructed to move the value stored at 0x01005338 into the eax register. For more information on endianness, the reader is encouraged to read the related documents in the reference section [5].