Как заставить ассемблер GNU использовать косую черту / для комментариев?
Это действительно глупая идиосинкразия с моей стороны, но я не выношу того, как GNU AS использует для вставки комментария. Я слишком привык к способу Sun (тот же, что используется в большинстве ассемблеров UNIX), который использует простую косую черту"/", чтобы закомментировать код до конца строки.
Знаете ли Вы способ выполнить мою маленькую прихоть?
3 ответа:
GNU GAS docs
В разделе " машинные зависимости" перейдите в каждую арку, а затем в "синтаксис" и "символы".
Это документальное подтверждение того, что комментарии относятся к каждой арке.
X86
Https://sourceware.org/binutils/docs-2.26/as/i386_002dChars.html#i386_002dChars
Наличие'#', появляющегося в любом месте строки, указывает на начало комментария, который продолжается до конца этого комментария. линия.
Если ' # ' появляется в качестве первого символа строки, то вся строка рассматривается как комментарий, но в этом случае строка также может быть директивой логического номера строки (см. комментарии) или командой управления препроцессором (см. препроцессор).
Если параметр командной строки --divide не указан, то символ'/', появляющийся в любом месте строки, также вводит комментарий к строке.
Однако, я либо что-то упускаю, либо есть ошибка, поскольку мои тесты не соответствуют документации.
ОК:
/ mycomment # mycomment nop # mycomment
Сбой:
Это предполагает, чтоnop / mycomment
/
работает только в том случае, если это первый символ.И
--divide
не имели никакого значения.Arm
Наличие " @ " в любом месте строки указывает на начало комментария, который распространяется на конец этой линии.
Если ' # ' появляется в качестве первого символа строки, то вся строка рассматривается как комментарий, но в этом случае строка также может быть директивой логического номера строки (см. комментарии) или командой управления препроцессором (см. препроцессор).
Мои тесты с
arm-linux-gnuabihf-as
подтверждают то, что документация говорит.ОК:
# mycomment @ mycomment nop @ mycomment
Сбой:
nop # mycomment
Aarch64
Https://sourceware.org/binutils/docs-2.26/as/AArch64_002dChars.html#AArch64_002dChars
Наличие
//' on a line indicates the start of a comment that extends to the end of the current line. If a
#' появляется как первый символ строки, вся строка рассматривается как комментарий.Мои тесты с
aarch64-linux-gnuabihf-as
подтверждают то, что написано в документации.ОК:
// mycomment # mycomment nop // mycomment
Сбой:
nop # mycomment
Личное рекомендация
Если вы можете выбрать, просто всегда компилируйте сборку с помощью
gcc
или явно используйте препроцессор Ccpp
и используйте комментарии препроцессора C:/* mycomment */
Потому что:
- C стандартизирован, и он будет работать для всех archs
Препроцессор C вам понадобится в любом случае, потому что макросы GNU GAS недостаточно мощны#
плохо, так как это может конфликтовать с директивами препроцессора#
Проверено на Ubuntu 16.04, Binutils 2.26.1.