【发布时间】:2018-01-26 11:23:32
【问题描述】:
我在 DS-5 5.28 中使用 ARM 程序集编程,目标是使用浮点和 Neon 的 cortex-a8。
当用 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
我想通过反汇编结果来检查我写的是否正确,但是编译失败所以没有要反汇编的对象。
【问题讨论】:
-
是的,我明白了。这不是我所说的“使用宏”的意思,但似乎汇编器不支持我正在考虑的那种宏。
-
如果你的意思是类似 C 的宏,那是我真正想要的,但我没有找到任何东西 see here for example
-
对于 GNU GAS,我建议对宏使用 C 预处理器,因为 GAS 预处理太弱了。相关:stackoverflow.com/questions/6514537/… 但
.equ asdf, #1.5拒绝使用该语法和我在 AS 2.31 上尝试过的任何变体。
标签: assembly syntax floating-point arm ds-5