GNU Assembler не поддерживает функцию «дополнительных локальных символов», которая, как вы заявляете, существует. Возможно, вас смутила задокументированная функция Dollar Local Labels , но эта функция работает не так, как вы описали.
Локальные метки в долларах являются разновидностью Локальных имен символов , в которых метки, состоящие только из цифр, могут быть определены несколько раз. Функция локальной метки доллара также позволяет многократно определять метку, состоящую только из цифр, за которыми следует один знак доллара ($). Ссылка на эти символы делается путем добавления суффикса f
или b
к метке, чтобы ассемблер знал, искать метку вперед или назад. Разница между ними заключается в том, что долларовые локальные метки становятся неопределенными после определения любой последующей нелокальной метки.
Также обратите внимание, что метки, начинающиеся с .L
, не являются локальными так же, как символы, описанные в предыдущий абзац есть. Метки, начинающиеся с .L
, могут быть определены только один раз, и на них можно ссылаться из любого места исходного файла ассемблера. В этом смысле они ничем не отличаются от любого нормального символа. Что отличает их от обычных символов, так это то, что они не включены в таблицу символов сгенерированного объектного файла.
Наконец, обратите внимание, что функция Dollar Local Label, помимо того, что вы не делаете то, что вам нужно, также не реализована в ARM-целях. Это также не реализовано для целей x86. В этом нет необходимости, так как функция локальных имен символов работает так же хорошо.
В ассемблере GNU не поддерживается функция, которая обрабатывает символы, начинающиеся с символа, отличного от git, и заканчивающиеся знаком доллара по-разному на любой платформе.