Codificación Little-Endian VS Big-Endian

CODIFICACIÓN LITTLE-ENDIAN VS BIG-ENDIAN

Autor: Francisco Isgleas Guzman
Sitio de Red: http://www.linuxparatodos.net/

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.

El término endianness (finalización) se refiere a la técnica adoptada para el ordenamiento de los bytes (y anteriormente, de bits) dentro de las distintas localidades de memoria de un equipo de cálculo, a nivel físico (hardware). Esto ocasiona que el sistema operativo de dicho dispositivo tenga que asimilar dicho método de ordenamiento para la ejecución, lectura y movimiento de la información dentro de los distintos elementos de almacenamiento del equipo.

Existen 3 técnicas de finalización, y la adopción de esta depende del análisis de requerimientos del fabricante. La técnica de big-endian (el extremo mayor finaliza primero) acomoda los bytes dependiendo del tamaño de la palabra, colocando en primera instancia la última palabra de la instrucción y, en última instancia, la primera palabra. Por ejemplo, para ordenar la instrucción 0x666973676c656173 en un equipo con un tamaño de palabra de 32 bits mediante big-endian, obtendremos:

... 0x6173 ! 0x6c65 ! 0x7367 ! 0x6669 ...
incremento de localidades -->

Algunas arquitecturas de microprocesadores que utilizan este tipo de ordenamiento son los procesadores de Motorola, PowerPC y Sparc (aún cuando para la versión 9 adopta la técnica mixed-endian). La técnica little-endian (también denominado como el “formato Intel”) coloca las palabras de las instrucciones de modo incremental, sin modificar su ordenamiento, simplificando en muchas ocasiones los accesos a pilas y localidades de memoria por parte de los algoritmos y programas ensamblados. Para ejemplificar, la misma instrucción arriba utilizada:

... 0x6669 | 0x7367 ! 0x6c65 ! 0x6173 ...
incremento de localidades -->

La técnica de middle-endian, denominada tambien bi-endian o mixed-endian, es una mezcla de las dos anteriores, combinando el posicionamiento en memoria de las palabras de instrucción o datos. Algunos procesadores que utilizan este método de posicionamiento son los ARM, PowerPC (excepto el PPC970/G5), DEC Alpha, Sparc v9, MIPS, PA-RISC y los IA64. El ordenamiento mediante middle-endian en la instrucción dada, con un tamaño de palabra de 32 bits posiciona, contando a partir del byte más significativo, el 2do byte primero, luego el 1ro, luego el 4to y finalmente el 3ro:

... 0x7367 | 0x6669 ! 0x6173 ! 0x6c65 ...
incremento de localidades -->

EEl uso de cada técnica es determinada por el fabricante de la arquitectura, siendo la elección tomada con respecto del hardware.


Linux Para Todos
http://www.linuxparatodos.net/portal/staticpages/index.php?page=big-lite