В информатике, смещение внутри массива или другого объекта структуры данных представляет собой целое число, указывающее расстояние (смещение) между началом объекта и данным элементом или точкой, предположительно внутри одного и того же объекта[1]. Концепция расстояния действительна только в том случае, если все элементы объекта имеют одинаковый размер (обычно заданный в байтах или «словах» (упорядоченный набор байтов или бит)).
Например, в массиве A
, с содержанием "abcdef"
, четвёртый элемент, содержащий символ 'd'
, имеет смещение в три от начала A
.
В компьютерной инженерии и низкоуровневом программировании (например, языке ассемблера) смещение обычно обозначает количество адресов, которые нужно добавить к базовому адресу, чтобы получить конкретный абсолютный адрес. В этом значении для указания размера смещения используется только базовый адресный блок, обычно 8-битный байт. В этом контексте смещение иногда называют «относительным адресом».
В инструкциях IBM System/360 12-битное смещение, встроенное в определённые команды, содержит диапазон от 0 до 4096 байт. Например, в инструкции безусловного перехода (X'47F0Fxxx') 12-битное шестнадцатеричное смещение «xxx» обеспечивало смещение байта от базового регистра (15) до ветки[2]. Нечётное смещение приведёт к проверке программы (если только в базовом регистре не содержится нечётный адрес), поскольку инструкции должны быть выровнены на границах полуслова для выполнения без программного или аппаратного прерывания[3].
В предыдущем примере описан непрямой способ обращения к ячейке памяти в формате сегмента: смещение. Например, предположим, что мы хотим ссылаться на ячейку памяти 0xF867. Один из способов, которым это может быть достигнуто, — сначала определить сегмент с начальным адресом 0xF000, а затем определить смещение 0x0867. Кроме того, также разрешено сдвигать шестнадцатеричный сегмент, чтобы достичь конечного абсолютного адреса памяти. Здесь следует отметить, что достичь окончательного абсолютного адреса можно разными способами.
![]() |
Это заготовка статьи по информатике. Вы можете помочь проекту, дополнив её. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .