Смещение (информатика)

редактировать

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

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

В языке ассемблера

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

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

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

.

Последняя правка сделана 2021-06-01 08:41:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте