我在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
我想通过反汇编结果来检查我是否正确编写了它,但是编译失败了,所以没有反汇编的对象。
答案 0 :(得分:1)
EQU
指令定义了一个采用特定值的符号。符号值是依次为整数的地址。您不能将符号作为浮点数作为值。
作为替代方案,请阅读汇编程序的手册。大多数汇编程序都能够定义宏,它允许您通过将浮点常量定义为宏来为浮点常量赋予符号名称。