Выразить константу с плавающей запятой из символического имени 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
Директива определяет символ, который принимает определенное значение. Значения символов - это адреса, которые в свою очередь являются целыми числами. Вы не можете дать символу число с плавающей запятой в качестве значения.
Как альтернатива, прочитайте руководство вашего ассемблера. Большинство ассемблеров имеют возможность определять макросы, которые позволят вам дать символическое имя константе с плавающей запятой, определив ее как макрос.