嗨,我想知道這裏有沒有人能指點我解決這個問題的方向。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讀取該地址,並顯示或以其他方式顯示。 –