Лучшие вопросы
Таймлайн
Чат
Перспективы
Метка (программирование)
именованный указатель места в программе Из Википедии, свободной энциклопедии
Remove ads
Метка (англ. label) — символьное имя, идентификатор для более удобного указания данных и кода в языках программирования. Позволяет программисту обходиться без вычисления и пересчёта адресов и смещений внутри программы (эти действия за него выполняет компилятор). Несмотря на то, что большинство языков программирования высокого уровня поддерживают операции с метками, их использование крайне нежелательно, так как программный код становится плохочитаемым, и отладка такой программы занимает большее время.
При компиляции каждой метке сопоставляется определённый адрес (число), который заносится в исполняемый модуль. Таким образом, в случае необходимости компилятор может вычислить смещение между метками (разность адресов).
В большинстве языков программирования формат записи метки такой:
название_метки:
Сначала идет название метки (также записанное по определенным правилам — в зависимости от языка программирования), затем двоеточие, затем код или данные, доступ к которым будет осуществляться по названию метки.
Remove ads
Пример
;…
mov eax, offset data
jmp label_2
label_1:
;…
label_2:
;…
data:
db "Привет!", 0
Во время ассемблирования метке data будет сопоставлено число (адрес первого байта строки «Привет!») и вместо 'offset data' в первой строке будет записано это число.
Во второй строке примера осуществляется безусловный переход (jump) на инструкции, следующие после метки label_2. Если адрес абсолютный (т. е. аргументом команды перехода является сам адрес), то во второй строке вместо label_2 будет записан адрес метки label_2. Если же переход относительный (задается смещением относительно текущей метки), тогда label_2 в этой же (второй) строке будет заменён на разность адресов (label_2 — label_1), т. е. смещением между метками.
Remove ads
См. также
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads