Endianness - Arquitetura de computadores

O que é Endianness? Como funciona a ordenação e organização dos bytes nos "data word"? Quando o Endianness interfere na migração entre plataformas?

[ Hits: 8.947 ]

Por: Carlos Henrique Y Furushima em 28/07/2014 | Blog: http://dbafurushima.com.br/index.html


Funcionamento / Interferência entre migração



Como funciona a ordenação e organização dos bytes nos "data word"?

Cada local de armazenamento na memória está associado com um índice, chamado seu endereço, que indica a sua posição. Uma data word hexadecimal "A1B2", são armazenados em endereços de memória consecutivos da seguinte forma "0A 01 0B 02", esse data word forma um conjunto de 4 bytes, que resulta em 32 bits.

O posicionamento do data word em memória principal, determina-se a ordenação e organização dos bytes. Há duas possíveis convenções de organização, são elas:
  • Big-endian: Armazena o byte mais significativo de um data word no endereço menor.
0A010B02 = 0A010B02

Os bytes são guardados por ordem decrescente do seu "peso numérico" em endereços sucessivos da memória.
Significa que o byte de ordem mais elevada do número está armazenado no endereço de memória mais baixo e de ordem mais baixa, no endereço mais elevado.


  • Little-endian: Armazena o byte menos significativo de um "data word" no endereço menor.
0A010B02 = 020B010A

Os bytes são guardados por ordem crescente do seu "peso numérico" em endereços sucessivos da memória.
Significa que o byte de ordem mais baixa do número está armazenado no endereço de memória mais baixo e de ordem mais elevada, no endereço mais elevado.

Faremos uma analogia com números decimais:
  • "A B C" em Big-endian :: significa "C B A" em Little-endian.
  • "1 2 3" em Little-endian :: significa "3 2 1" em Big-endian.

Isso mostra que é necessário um tratamento de conversão se quisermos fazer migrações entre plataformas.

Quando o Endianness interfere em migração entre plataformas?

Com base nos conteúdos anteriores, chegamos à conclusão que a forma de ordenação dos data word é a causa de incompatibilidade de programas (software) entre plataformas computacionais, ou seja, o tratamento de baixo nível do sistema computacional provoca essa situação, uma vez que as plataformas tratam a entrada e saída dos dados de forma não similares.

A solução para esse problema, muitas vezes, é a recompilação do programa computacional, ou seja, a reinstalação do software. Assim, o código escrito em uma determinada linguagem de programação em alto nível é compilado, respeitando a sintaxe do compilador e é gerado o executável em linguagem de máquina para a plataforma.

Assim, um código em linguagem de alto nível pode ser compilado para qualquer plataforma, desde que o compilador suporte a geração do executável para esta determinada plataforma.

Se o mesmo código em Linguagem C (código escrito em uma arquivo TXT) for compilado respeitando a sintaxe de cada compilador em suas plataformas, o resultado do programa será o mesmo, pois programas iguais geram resultados iguais.

Neste caso, o Endiannes não interfere, uma vez que programas iguais (código) geram resultados iguais (programa em execução).

Em caso de não existência do passo 1, ou seja, a compilação em alto nível, o Endianess é extremamente relevante, pois, como dito anteriormente, essa convenção orquestra o tratamento de baixo nível do sistema computacional, o que pode tornar a execução do programa ininteligível para o sistema computacional.


Página anterior    

Páginas do artigo
   1. Introdução
   2. Funcionamento / Interferência entre migração
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Fax Modem LG LM I56N no SuSE 10

Instalando Ubuntu Touch no seu celular (Linux de bolso)

Wireless 2200BG Network no Slackware 11

Leitora SafeSign de e-CPF no Linux

Easy Peasy 1.5 Linux para Netbooks

  
Comentários
[1] Comentário enviado por phoemur em 28/07/2014 - 12:40h

Muito bom.

Para saber seu endianness eu uso:

lscpu | grep -i byte

ou em python:

python -c 'import sys; print(sys.byteorder)'


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts