Little endian
Origem: Wikipédia, a enciclopédia livre.
Little Endian é a designação para uma forma de ordenação dos bits em uma arquitetura de computadores. Os processadores ARM , por exemplo, foram projetados para serem conectados a uma memória endereçada a byte, ou seja, cada endereço da memória corresponde a um byte. Apesar da palavra interna ser de 1 Byte, o tratamento que o microprocessador ARM faz dos dados varia, e deve se moldar a seguinte estrutura: endereço seguido de offset (ENDEREÇO+OFFSET). O offset é o deslocamento no endereço de referência. Se uma palavra é de 1 Byte ele deslocará (contará) BYTE a BYTE. Se for configurado pelo programador para ser de 16 bits (2 BYTES), contará cada 2 Bytes. Se 32bits, contará cada 4 BYTES. Assim, poderemos ter 3 configurações internas da maneira como é acessada a memória. Por exemplo:
configuração em 32 bits:
ENDEREÇO------bit32----------------------------------------------------------bit 0
0x000FFC00004----0x000FFC00007----0x000FFC00006----0x000FFC00005----0x000FFC00004
0x000FFC00000----0x000FFC00003----0x000FFC00002----0x000FFC00001----0x000FFC00000
Neste tipo de disposição só podemos referenciar endereços multiplos de 4, offset de um em um. O endereço sempre é do BYTE menos significativo, na linha.
Configuração de 16 bits:
ENDEREÇO bit 15 bit 0
0x000FFC00006 0x000FFC00007 0x000FFC00006 0x000FFC00004 0x000FFC00005 0x000FFC00004 0x000FFC00002 0x000FFC00003 0x000FFC00002 0x000FFC00000 0x000FFC00001 0x000FFC00000
Neste tipo de disposição só podemos referenciar endereços multiplos de 2, offset de um em um. O endereço sempre é do BYTE menos significativo, na linha.
O modo de endereçamento acima é LITTLE ENDIAN, padrão na arquitetura ARM.
[[LITTLE ENDIAN X BIG ENDIAN:]]
Existem dois modos gerais como são dispostos os Bytes dentro da memória:
1. Little Endian: descrito acima. 2. Big Endian:Tudo permanece igual como no exemplo acima, apenas ao invés de colocarmos os bytes do bit menos significativo para o mais significativo (no caso, da direita para a esquerda) colocamos da esquerda para a direita. O resultado é que o preenchimento será invertido.
configuração em 32 bits: - BIG ENDIAN
ENDEREÇO bit31 bit 0
0x000FFC00004 0x000FFC00004 0x000FFC00005 0x000FFC00007 0x000FFC00007 0x000FFC00000 0x000FFC00000 0x000FFC00001 0x000FFC00002 0x000FFC00003
O endereço sempre é do BYTE mais significativo, na linha.
... ...
Por exemplo, uma palavra de 16 bits:
0010 0110 1001 1010
será armazenada da seguinte forma em uma arquitetura que endereça por byte:
1600: 0010 0110
1599: 1001 1010
A ordenação big endian faz o inverso. Ex:
1600: 1001 1010
1599: 0010 0110