嗨,我想知道这里有没有人能指点我解决这个问题的方向。Arm Assembly Floating Point
编写并运行ARM VFP组装程序来计算球体的体积:4(pi * r^3)/ 3如果r = 25.5。 你TI的Launchpad支持浮点运算,但它是在重置(所以你必须打开它!)
这是从我的教科书ARM汇编语言问题编程&架构
到目前为止关掉我已经写了这个代码,以解决方程,并想知道如何我可以去输出这个值,并确保我已经启用了浮点。
; have to enable The CPAC register in order to use floating point: offset 0xD88
VMOV.F32 S0, #25.5 ;SO NOW HOLDS THE CONSTANT 25.5
VMOV.F32 S1, #3.14 ;S1 NOW HOLDS THE CONSTANT 3.14
VMOV.F32 S2, #4 ;S2 NOW HOLDS THE CONSTANT 4
VMOV.F32 S3, #3 ;S3 NOW HOLDS THE CONSTANT 3
VMUL.F32 S4,S0,S0 ;S4 NOW HOLDS THE VALUE R^2
VMUL.F32 S4,S4,S0 ;S4 NOW HOLDS THE VALUE R^3
VMUL.F32 S5,S4,S1 ;S5 NOW HOLDS THE VALUE 3.14*R^3
VMUL.F32 S6,S5,S2 ;S6 NOW HOLDS THE VALUE 4(3.14*R^3)
VMUL.F32 S7,S6,S3 ;S7 NOW HOLDS THE VALUE (4(3.14*R^3))/3
; v = 69455.9
; this number V has to be converted to IEE in order to be output??? = 0100 0111 1000 0111 1010 0111 1111 0011
来自ARMS文档CPAC或CPACR字段CP10和CP11共同控制对浮点协处理器的访问,如果实现了 ,则一个是双倍单一。将11设置为这些位可以让您完全访问。提示将所有的1写入cpac并将其读回... 0xE000ED88是该寄存器的地址。 –
只是在不启用协处理器的情况下执行这些操作将最终成为未定义的指令,因此除非启用它,否则不能输出任何值。你可以将它从一个浮点寄存器复制到一个通用寄存器(不能浮到int)并从测试函数返回,或者将它保存到某个地址的内存中,然后使用ldr读取该地址,并显示或以其他方式显示。 –