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 dado, presumiblemente dentro del mismo objeto. El concepto de distancia es válido solo si todos los elementos del objeto son del mismo tamaño (normalmente expresado en bytes o palabras ).
Por ejemplo, A
como 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 generalmente denota el número de ubicaciones de direcciones agregadas a una dirección base para llegar a una dirección absoluta específica . En este significado (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, un desplazamiento a veces se denomina dirección relativa .
En las instrucciones IBM System / 360 , un desplazamiento de 12 bits incrustado dentro de 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 proporcionó el desplazamiento de bytes desde el registro base (15) al que se bifurca. Un desplazamiento impar provocaría una verificación del programa (a menos que el registro base en sí mismo también contuviera una dirección impar), dado que las instrucciones tenían que alinearse en límites de media palabra para ejecutarse sin un programa o una interrupción de hardware .
El ejemplo anterior describe una forma indirecta de dirigirse a una ubicación de memoria en el formato de segmento: desplazamiento. Por ejemplo, supongamos que queremos hacer referencia a la ubicación de memoria 0xF867. Una forma de lograrlo es definiendo primero un segmento con la dirección inicial 0xF000 y luego definiendo un desplazamiento de 0x0867. Además, también se nos permite cambiar el segmento hexadecimal para alcanzar la dirección de memoria absoluta final. Una cosa a tener en cuenta aquí es que podemos llegar a nuestra dirección absoluta final de muchas maneras.