Параграф (единица измерения) (Hgjgijgs (y;nuneg n[byjyunx))

Перейти к навигации Перейти к поиску

Пара́граф (англ. paragraph) — единица измерения объёма данных в информатике. Численно параграф равен 16 байтам.

Использование

[править | править код]

Чаще всего данная единица используется не для собственно измерения объёма блока данных, а для записи адреса/смещения блока и для обозначения выравнивания.

Если адрес какой-либо структуры кратен 16, он может быть выражен в параграфах целым числом. Говорят, что структура должна быть выравнена по границе параграфа, если по какой-то причине требуется, чтобы адрес/смещение начала структуры был кратен 16. Обычно за систему отсчёта берётся начало адресного пространства, но в некоторых случаях может быть взят произвольный адрес.

Поскольку размер параграфа, записанный в шестнадцатеричной системе счисления, равен 0x10, адрес, кратный параграфу, является круглым числом. Адрес[1] любой сущности, выравненной по границе параграфа, будет заканчиваться[2] как минимум одним нулём (например 0xFC94B8C0).

Применение

[править | править код]
  • В Hex-редакторах: как правило используется 16 колонок, поэтому одна строка в редакторе — один параграф. Расстояние (смещение) между любыми двумя байтами, стоящими в j-той колонке строк (i) и (i+n) равно n параграфам.
  • В архитектуре x86 при функционировании в реальном режиме: расстояние между началами двух соседних сегментов равно одному параграфу. Поэтому в этом режиме значение сегментного регистра, по сути, является индексом параграфа в физической памяти. При обращении по реальному адресу SSSS:OOOO берётся параграф номер SSSS, от него отсчитывается OOOO байтов, и выполняется обращение по полученному физическому адресу.
  • В микропроцессоре x86: используется кеш инструкций, оперирующий блоками размером 16 байт. Поэтому часто для увеличения производительности практикуется выравнивание начал процедур по границе параграфа. Помимо процедур, выравниваются также блоки кода, на которые (наравне с процедурами) часто совершаются условные и безусловные переходы: циклы, ветвления и т.п. Это неизбежно приводит к увеличению размера кода, порою значительному, поэтому большинство компиляторов имеют специальную опцию, отключающую такие выравнивания, либо общую опцию «Оптимизировать размер кода», в рамках которой не выполняется выравнивание блоков кода по границе параграфа.
  • В некоторых ассемблерах используется ключевое слово PARA, устанавливающее выравнивание для описываемого блока данных.

Употребление

[править | править код]

Поскольку единица сама по себе используется для акцентирования внимания на кратность, с этой единицей никогда не используются приставки кратности.

Примечания

[править | править код]
  1. Записанный в Hex-представлении как общепринятом для записи адресов.
  2. Только в случае, если в качестве точки отсчёта выбрано начало адресного пространства.