В значительной степени да;см. также Место хранения меток MIPS для получения дополнительной информации о символах, являющихся способами обращения к адресам памяти. Они очень полезны, чтобы избежать необходимости пересчитывать вручную числовой адрес вершины каждого цикла (или фактически расстояние от относительной ветви).
Они также полезны для случаев, когда время сборкирасчет невозможен, и его следует отложить до времени ссылки.
Терминология: метка определяет символ. Символы также могут быть определены другими способами, но обычнометки.
foo:
на отдельной строке (или в начале строки) - это метка .
foo
- это символ , на который вы можете ссылаться из других мест, например jal foo
или bne foo
. Или поместите адрес в регистр с помощью la $t0, foo
. Вы можете даже ссылаться на символ из других исходных файлов для символов, которые экспортируются, чтобы они оказались в таблице символов объектный файл (.o
), который ваш ассемблер создает из вашего источника asm. (например, вы используете .global foo
для экспорта foo
вместо того, чтобы оставлять его просто как локальный символ файла.)
В синтаксисе GAS (который в основном используется MARS) другие способы определения символов связаны с такими вещами, какдиректива .set
или .weakref
для определения метки, которая является псевдонимом другой метки. Или .comm
, чтобы зарезервировать место в BSS и указать имя символа на нем. (Но без использования директивы .bss
, чтобы фактически сделать .bss
текущим разделом, так что это не метка.)