stringtranslate.com

Compensación (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 sólo si todos los elementos del objeto son del 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 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, sólo 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 de IBM System/360 , un desplazamiento de 12 bits integrado en determinadas 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 realizar la bifurcación. Un desplazamiento impar provocaría una verificación del programa (a menos que el registro base también contuviera una dirección impar), ya que las instrucciones debían alinearse en límites de media palabra para ejecutarse sin una interrupción del programa o del 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 lograr esto 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 a tener en cuenta aquí es que podemos llegar a 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 tiene una clase y desea recuperar el atributo "color" de esta clase, el desplazamiento puede ser 0x0100, pero este desplazamiento debe agregarse a el desplazamiento de la clase en sí, no la dirección base. Si el desplazamiento de la clase es 0xFF881 y la dirección base es 0x0A100, para recuperar el atributo "color" ambos desplazamientos se agregan a la dirección base. 0x0A100 (base) + 0xFF881 (clase) + 0x0100 (atributo). En última instancia, la dirección del atributo será 0x109A81.

Ver también

Referencias

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