Выразить константу с плавающей запятой из символического имени EQU

Я программирую на сборке ARM в DS-5 5.28, нацеливаясь на cortex-a8 с плавающей точкой и Neon.

При выражении констант с помощью EQU, например,

M EQU 5

тогда я могу использовать константу в остальной части программы, в частности, при выделении констант в памяти данных, например:

mydata  DCD  M

Теперь, если я хочу выделить константу с плавающей запятой как 32-битный двоичный файл, я могу сделать:

myfloat  DCFS  5

или безразлично:

myfloat  DCFS  5.0

Но следующее дает синтаксическую ошибку:

myfloat  DCFS  M

Я пробовал все виды трюков, как DCFS (M+0.0) или же M EQU 5.0, но ассемблер ничего не принимает, и я не могу найти директив для приведения констант, и даже форум Arm, который кажется подходящим. Также я не хотел бы жестко кодировать константы (которые могут изменяться) более одного раза в коде.

РЕДАКТИРОВАТЬ 1

Я пытался с макросами, та же ошибка (A1194E: Неверное число с плавающей точкой):

    MACRO
$label  FP_CONSTANT  $value
$label  DCFS    $value
    MEND

; use:
myfloat  FP_CONSTANT  M

Я хотел бы проверить, правильно ли я написал, разобрав результат, но компиляция не удалась, поэтому нет никакого объекта для дизассемблирования.

1 ответ

EQU Директива определяет символ, который принимает определенное значение. Значения символов - это адреса, которые в свою очередь являются целыми числами. Вы не можете дать символу число с плавающей запятой в качестве значения.

Как альтернатива, прочитайте руководство вашего ассемблера. Большинство ассемблеров имеют возможность определять макросы, которые позволят вам дать символическое имя константе с плавающей запятой, определив ее как макрос.

Другие вопросы по тегам