Смещение (информатика): различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
KrBot (обсуждение | вклад) м подстановка даты в шаблон:Нет ссылок |
Skmp (обсуждение | вклад) источники |
||
Строка 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. Кроме того, также разрешено сдвигать шестнадцатеричный сегмент, чтобы достичь конечного абсолютного адреса памяти. Здесь следует отметить, что достичь окончательного абсолютного адреса можно разными способами.
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Это заготовка статьи по информатике. Помогите Википедии, дополнив её. |
- ↑ 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.
- ↑ IBM Knowledge Center (амер. англ.). www.ibm.com. Дата обращения: 8 января 2018.
- ↑ Однократная передача данных (LDR, STR) . www.gaw.ru. Дата обращения: 8 января 2018.