Смещение (информатика): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м подстановка даты в шаблон:Нет ссылок
источники
Строка 1: Строка 1:
В [[Информатика|информатике]], '''смещение''' внутри [[Массив (программирование)|массива]] или другого объекта [[Структура данных|структуры данных]] представляет собой [[Целое (тип данных)|целое число]], указывающее расстояние (смещение) между началом объекта и данным элементом или точкой, предположительно внутри одного и того же объекта. Концепция расстояния действительна только в том случае, если все элементы объекта имеют одинаковый размер (обычно заданные в [[Байт|байтах]] или «словах»(упорядоченный набор байтов или [[бит]])).
В [[Информатика|информатике]], '''смещение''' внутри [[Массив (программирование)|массива]] или другого объекта [[Структура данных|структуры данных]] представляет собой [[Целое (тип данных)|целое число]], указывающее расстояние (смещение) между началом объекта и данным элементом или точкой, предположительно внутри одного и того же объекта<ref>{{Книга|автор=Dandamudi, Sivarama P., 1955-|заглавие=Introduction to Assembly language programming : for Pentium and RISC processors|ссылка=https://www.worldcat.org/oclc/262679965|ответственный=|издание=2nd ed|место=New York|издательство=Springer|год=2005|страницы=76|страниц=1 online resource (xxiii, 690 pages)|isbn=0387271554|isbn2=}}</ref>. Концепция расстояния действительна только в том случае, если все элементы объекта имеют одинаковый размер (обычно заданные в [[Байт|байтах]] или «словах»(упорядоченный набор байтов или [[бит]])).


Например, в массиве <code>A</code>, с содержанием <code>"abcdef"</code>, четвертый элемент, содержащий символ <code>'d'</code>, имеет смещение в три от начала <code>A</code>.
Например, в массиве <code>A</code>, с содержанием <code>"abcdef"</code>, четвертый элемент, содержащий символ <code>'d'</code>, имеет смещение в три от начала <code>A</code>.
Строка 6: Строка 6:
В [[Компьютерная инженерия|компьютерной инженерии]] и низкоуровневом программировании (например, [[Язык ассемблера|языке ассемблера]]) смещение обычно обозначает количество адресов, которые нужно добавить к [[Базовый адрес|базовому адресу]], чтобы получить конкретный [[Адрес (информатика)#Машинный язык|абсолютный адрес]]. В этом значении для указания размера смещения используется только базовый адресный блок, обычно 8-битный байт. В этом контексте смещение иногда называют «относительным адресом».
В [[Компьютерная инженерия|компьютерной инженерии]] и низкоуровневом программировании (например, [[Язык ассемблера|языке ассемблера]]) смещение обычно обозначает количество адресов, которые нужно добавить к [[Базовый адрес|базовому адресу]], чтобы получить конкретный [[Адрес (информатика)#Машинный язык|абсолютный адрес]]. В этом значении для указания размера смещения используется только базовый адресный блок, обычно 8-битный байт. В этом контексте смещение иногда называют «относительным адресом».


В инструкциях [[IBM System/360|IBM System / 360]] 12-битное смещение, встроенное в определенные команды, содержит диапазон от 0 до 4096 байт. Например, в инструкции безусловного перехода (X'47F0Fxxx') 12-битное [[Шестнадцатеричная система счисления|шестнадцатеричное]] смещение «xxx» обеспечивало смещение байта от базового регистра (15) до ветки. Нечетное смещение приведет к проверке программы (если только в базовом регистре не содержится нечетный адрес), поскольку инструкции должны быть выровнены на границах полуслова для выполнения без программного или аппаратного [[Прерывание|прерывания]].
В инструкциях [[IBM System/360|IBM System / 360]] 12-битное смещение, встроенное в определенные команды, содержит диапазон от 0 до 4096 байт. Например, в инструкции безусловного перехода (X'47F0Fxxx') 12-битное [[Шестнадцатеричная система счисления|шестнадцатеричное]] смещение «xxx» обеспечивало смещение байта от базового регистра (15) до ветки<ref>{{Cite web|url=https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.ceev100/rtnlyout.htm|title=IBM Knowledge Center|publisher=www.ibm.com|lang=en-US|accessdate=2018-01-08}}</ref>. Нечетное смещение приведет к проверке программы (если только в базовом регистре не содержится нечетный адрес), поскольку инструкции должны быть выровнены на границах полуслова для выполнения без программного или аппаратного [[Прерывание|прерывания]]<ref>{{Cite web|url=http://www.gaw.ru/html.cgi/txt/doc/micros/arm/asm/asm_arm/lds_str.htm|title=Однократная передача данных (LDR, STR)|publisher=www.gaw.ru|accessdate=2018-01-08}}</ref>.


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

Версия от 14:30, 8 января 2018

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

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

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

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

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

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

  1. Dandamudi, Sivarama P., 1955-. Introduction to Assembly language programming : for Pentium and RISC processors. — 2nd ed. — New York: Springer, 2005. — С. 76. — 1 online resource (xxiii, 690 pages) с. — ISBN 0387271554.
  2. IBM Knowledge Center (амер. англ.). www.ibm.com. Дата обращения: 8 января 2018.
  3. Однократная передача данных (LDR, STR). www.gaw.ru. Дата обращения: 8 января 2018.