Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В информатике , смещение внутри массив или другая структура данных , объект представляет собой целое число , указывающее расстояние (смещение) между началом объекта и данным элементом или точками, предположительно , в пределах того же сам объекта. Концепция расстояния действительна только в том случае, если все элементы объекта имеют одинаковый размер (обычно указывается в байтах или словах ).

Например, в Aкачестве массива символов, содержащего "abcdef"четвертый элемент, содержащий символ, 'd'имеет смещение в три раза от начала A.

На языке ассемблера [ править ]

В компьютерной инженерии и низкоуровневом программировании (например, на языке ассемблера ) смещение обычно обозначает количество адресных ячеек, добавленных к базовому адресу , чтобы добраться до определенного абсолютного адреса . В этом (исходном) значении смещения для указания размера смещения используется только базовая единица адреса, обычно 8-битный байт . В этом контексте смещение иногда называют относительным адресом .

В инструкциях IBM System / 360 12-битное смещение, встроенное в определенные инструкции, обеспечивает диапазон от 0 до 4096 байт. Например, в инструкции безусловного перехода (X'47F0Fxxx ') 12-битное шестнадцатеричное смещение xxx обеспечивает смещение в байтах от базового регистра (15) для перехода. Нечетное смещение вызвало бы проверку программы (если сам базовый регистр также не содержал нечетный адрес), поскольку инструкции должны были быть выровнены по границам полуслова для выполнения без программного или аппаратного прерывания .

В предыдущем примере описан косвенный способ обращения к ячейке памяти в формате сегмент: смещение. Например, предположим, что мы хотим обратиться к ячейке памяти 0xF867. Один из способов сделать это - сначала определить сегмент с начальным адресом 0xF000, а затем определить смещение 0x0867. Кроме того, нам также разрешено сдвигать шестнадцатеричный сегмент, чтобы достичь окончательного абсолютного адреса памяти. Здесь следует отметить, что мы можем достичь нашего окончательного абсолютного адреса разными способами.