3

我在 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)or M EQU 5.0,但汇编器不接受任何东西,而且我找不到强制转换常量的指令,甚至找不到看起来合适的 Arm 论坛。我也不想在代码中多次硬编码常量(可能会改变)。

编辑 1

我试过宏,同样的错误(A1194E:错误的浮点数):

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

; use:
myfloat  FP_CONSTANT  M

我想通过反汇编结果来检查我是否写对了,但是编译失败了,所以没有对象可以反汇编。

4

1 回答 1

1

EQU指令定义了一个符号以获取特定值。符号值是地址,它们又是整数。您不能给符号一个浮点数作为值。

作为替代方案,请阅读您的汇编器手册。大多数汇编程序都有定义宏的能力,这应该允许您通过将浮点常量定义为宏来为浮点常量赋予符号名称。

于 2018-01-26T11:27:24.193 回答