En informática , un desplazamiento dentro de una matriz u otro objeto de estructura de datos es un entero que indica la distancia (desplazamiento) entre el inicio del objeto y un elemento o punto dado, presumiblemente dentro del mismo objeto. [ 1 ] : 100–103 El concepto de distancia es válido solo si todos los elementos del objeto son del mismo tamaño (normalmente dado 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 el número de posiciones de dirección que se suman 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, generalmente el byte de 8 bits , para especificar el tamaño del desplazamiento. En este contexto, a veces se denomina al desplazamiento dirección relativa .
En las instrucciones del IBM System/360 , un desplazamiento de 12 bits integrado en ciertas instrucciones proporcionaba un rango de entre 0 y 4096 bytes. Por ejemplo, dentro de una instrucción de salto incondicional (X'47F0Fxxx'), el desplazamiento hexadecimal de 12 bits xxx indicaba el desplazamiento en bytes desde el registro base (15) al que saltar. Un desplazamiento impar provocarí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 acceder a una ubicación de memoria en el formato segmento:desplazamiento. Por ejemplo, supongamos que queremos acceder a la ubicación de memoria 0xF867. Una forma de lograrlo es definiendo primero un segmento con la dirección inicial 0xF000 y, a continuación, definiendo un desplazamiento de 0x0867. Además, podemos desplazar el segmento hexadecimal para alcanzar la dirección de memoria absoluta final. Cabe destacar que podemos acceder a nuestra dirección absoluta final de diversas maneras.
Un desplazamiento no siempre es relativo a la dirección base del módulo. Por ejemplo: si tiene una clase y desea recuperar el atributo "color" de esta clase, el desplazamiento puede ser 0x0100, pero este desplazamiento debe sumarse 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, para recuperar el atributo "color" se suman ambos desplazamientos a la dirección base: 0x0A100 (base) + 0xFF881 (clase) + 0x0100 (atributo). Finalmente, la dirección del atributo será 0x109A81.
Véase también
Referencias
- ↑ 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-8OCLC 318301687
- Memoria de computadora
- esbozos de informática