Difference between revisions of "Endian"

From CDOT Wiki
Jump to: navigation, search
(Other Memory Sequences)
(Origin of the Terms)
Line 51: Line 51:
 
== Origin of the Terms ==
 
== Origin of the Terms ==
  
The terms ''Big-Endian'' and ''Little-Endian'' originally appeared in the book ''Gulliver's Travels'', where they referred to which end of a boiled egg was opened first.
+
The terms ''Big-Endian'' and ''Little-Endian'' originally appeared in the classic satirical tale [https://www.gutenberg.org/files/829/829-h/829-h.htm Gulliver's Travels] by Jonathan Swift, where they referred to which end of a boiled egg was opened first.

Revision as of 15:44, 4 January 2017

The Endian-ism of a processor refers to the order in which multi-byte values are stored in memory.

Little-Endian

Little-endian systems store the least-significant byte of a multi-byte value at the lowest address.

For example, on 6502 systems (with a 8 bit/1 byte word size), the 16-bit value $FFEE stored at address $1000 would be stored like this:

$1000 $EE
$1001 $FF

Likewise, on an x86_64 system, the 64-bit value 0xFFEEDDCCBBAA9988 would be stored at memory location 0x1000 like this:

0x1000 0x88
0x1001 0x99
0x1002 0xAA
0x1003 0xBB
0x1004 0xCC
0x1005 0xDD
0x1006 0xEE
0x1007 0xFF


Big-Endian

Big-endian systems store multi-byte values with the most significant byte at the lowest address.

For example, on a Motorola 68030 CPU, the value 0xFFEEDDCC would be written at memory location 0x1000 as:

0x1000 0xFF
0x1001 0xEE
0x1002 0xDD
0x1003 0xCC

Bi-endian

Bi-endian CPUs can store data in either format (though sometimes not instructions). ARM Aarch32 and Aarch64 systems, PowerPC, Alpha, recent SPARC, MIPS, and Itanium systems are bi-endian.

Other Memory Sequences

There are a few, rare architectures which store values in a sequence other than strict little-endian or big-endian format. For example, the 32-bit value FFEEDDCCh would be stored by a PDP-11 at address 1000h in this manner:

1000h EEh
1001h FFh
1002h CCh
1003h DDh

That is, each 16-bit word is stored in little-endian format, but the two 16-bit words are in big-endian sequence.

Origin of the Terms

The terms Big-Endian and Little-Endian originally appeared in the classic satirical tale Gulliver's Travels by Jonathan Swift, where they referred to which end of a boiled egg was opened first.