从EQU符号名称表示浮点常量

时间:2018-01-26 11:23:33

标签: assembly syntax floating-point arm ds-5

我在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

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

1 个答案:

答案 0 :(得分:1)

EQU指令定义了一个采用特定值的符号。符号值是依次为整数的地址。您不能将符号作为浮点数作为值。

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