Метка (программирование)
Материал из Википедии — свободной энциклопедии
Метка (англ. label) — символьное имя, идентификатор для упрощения доступа к данным и коду в языках программирования. Позволяет программисту обходиться без пересчета адресов и смещений внутри программы (за него это выполняет компилятор)
При компиляции каждой метке сопоставляется определенный адрес (число), который заносится в исполняемый модуль. Таким образом, в случае необходимости компилятор может вычислить смещение между метками (разность адресов).
В большинстве языков программирования формат записи метки такой:
название_метки:
Сначала идет название метки (также записанное по определенным правилам — в зависимости от языка программирования), затем двоеточие, затем код или данные, доступ к которым будет осуществляться по названию метки.
[править] Пример
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), т. е. смещением между метками.