stringtranslate.com

Offset (informática)

En informática , un desplazamiento dentro de una matriz u otro objeto de estructura de datos es un número entero que indica la distancia (desplazamiento) entre el comienzo del objeto y un elemento o punto determinado, presumiblemente dentro del mismo objeto. [1] : 100–103  El concepto de distancia es válido solo si todos los elementos del objeto tienen el mismo tamaño (normalmente expresado en bytes o palabras ).

Por ejemplo, si Aes una matriz de caracteres que contiene "abcdef", el cuarto elemento que contiene el carácter 'd'tiene un desplazamiento de tres desde el inicio de A.

En lenguaje ensamblador

En ingeniería informática y programación de bajo nivel (como el lenguaje ensamblador ), un desplazamiento suele indicar la cantidad de ubicaciones de dirección que se suman a una dirección base para llegar a una dirección absoluta específica. En este sentido (original) de desplazamiento, solo se utiliza la unidad de dirección básica, normalmente el byte de 8 bits , para especificar el tamaño del desplazamiento. En este contexto, a veces se denomina desplazamiento a una dirección relativa .

En las instrucciones IBM System/360 , un desplazamiento de 12 bits incorporado en ciertas instrucciones proporcionaba un rango de entre 0 y 4096 bytes. Por ejemplo, dentro de una instrucción de bifurcación incondicional (X'47F0Fxxx'), el desplazamiento hexadecimal de 12 bits xxx proporcionaba el desplazamiento de bytes desde el registro base (15) al que se debía realizar la bifurcación. Un desplazamiento impar causaría una comprobación del programa (a menos que el propio registro base también contuviera una dirección impar), ya que las instrucciones debían estar alineadas en límites de media palabra para ejecutarse sin una interrupción de programa o de hardware .

El ejemplo anterior describe una forma indirecta de hacer referencia a una ubicación de memoria en el formato segmento:desplazamiento. Por ejemplo, supongamos que queremos hacer referencia a la ubicación de memoria 0xF867. Una forma de lograrlo es definir primero un segmento con la dirección inicial 0xF000 y luego definir un desplazamiento de 0x0867. Además, también se nos permite desplazar el segmento hexadecimal para alcanzar la dirección de memoria absoluta final. Una cosa que debemos tener en cuenta aquí es que podemos alcanzar nuestra dirección absoluta final de muchas maneras.

Un desplazamiento no siempre es relativo a la dirección base del módulo, por ejemplo: Si tienes una clase y quieres recuperar el atributo "color" de esta clase, el desplazamiento puede ser 0x0100, pero este desplazamiento tiene que ser sumado al desplazamiento de la clase misma, no a la dirección base. Si el desplazamiento de la clase es 0xFF881 y la dirección base es 0x0A100, entonces para recuperar el atributo "color" ambos desplazamientos se suman a la dirección base. 0x0A100 (base) + 0xFF881 (clase) + 0x0100 (atributo). Finalmente la dirección del atributo será 0x109A81.

Véase también

Referencias

  1. ^ Kernighan, Brian W. ; Ritchie, Dennis M. (1988). El lenguaje de programación C (2.ª ed.). Englewood Cliffs, Nueva Jersey: Prentice Hall. ISBN 0-13-110362-8.OCLC 318301687  .