Offset (ciência da computação)

Em ciência da computação, um offset (em português, deslocamento) dentro de uma matriz ou outra estrutura de dados é um inteiro indicando a distância (deslocamento) entre o começo do objeto e um dado elemento ou ponto, presumivelmente dentro do mesmo objeto.[1] O conceito de uma distância é válido apenas se todos os elementos do objeto forem do mesmo tamanho (normalmente dados em bytes ou palavras).

Por exemplo, em A como uma matriz de caracteres contendo "abcdef", o quarto elemento contendo o caractere 'd' tem um deslocamento de três desde o início de A.

Em linguagem assembly

Em engenharia da computação e programação de baixo nível (como linguagem de montagem), um offset geralmente indica o número de locais de endereço adicionados a um endereço de base para chegar a um endereço absoluto específico. Nesse sentido (original) de deslocamento, apenas a unidade básica de endereço, geralmente o byte de 8 bits, é usado para especificar o tamanho do deslocamento. Neste contexto, um deslocamento é às vezes chamado de endereço relativo.

Nas instruções do IBM System/360, um deslocamento de 12 bits incorporado em determinadas instruções forneceu um intervalo entre 0 e 4096 bytes. Por exemplo, dentro de uma instrução de ramificação incondicional (X'47F0Fxxx'), o deslocamento hexadecimal de xxx de 12 bits forneceu o deslocamento de bytes do registrador de base (15) para ramificar. Um offset ímpar causaria uma checagem de programa (a menos que o próprio registrador base também contivesse um endereço ímpar) - já que instruções tinham que ser alinhadas em limites de meia-palavra para executar sem uma interrupção de programa ou hardware.

O exemplo anterior descreve uma maneira indireta de endereçar para um local de memória no formato de segmento:deslocamento. Por exemplo, suponha que queremos nos referir à localização da memória 0xF867. Uma maneira de conseguir isso é definir primeiro um segmento com o endereço inicial 0xF000 e, em seguida, definir um deslocamento de 0x0867. Além disso, também podemos mudar o segmento hexadecimal para alcançar o endereço de memória absoluto final. Uma coisa a notar aqui é que podemos alcançar nosso endereço absoluto final de várias maneiras.

Referências

Este artigo sobre ciência da computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.