[英]Load immediate Floating Point in ARM Register
我需要使用匯編程序將立即值0.5f(在HEX中= 0.8)加載到NEON寄存器(或ARM寄存器,我可以對其進行VMOV)中。
我已閱讀ARM文檔: http : //infocenter.arm.com/help/index.jsp?topic=/ com.arm.doc.dui0204h/ Bcfjicfj.html鏈接至: http : //infocenter.arm.com /help/index.jsp?topic=/com.arm.doc.dui0204h/CIHGGEEB.html
他們說可以加載浮點的地方:
可以表示為+/- n * 2-r的任何數字,其中n和r是整數,16 <= n <= 31,0 <= r <= 7。
因為0.8超出范圍,所以我希望我需要加載HEX 1.8並減去1.0,但以下說明對於編譯器而言不正確:
VMOV.F32 d10, #0x1.0 \n\t
VMOV.F32 d10, #0x1.8 \n\t
但是,使用0.5十進制值可以解決問題,即使它應該超出范圍:
VMOV.F32 d10, #0.5 \n\t
使用十六進制值如何執行相同操作?
還有另一個問題:上一條VMOV.F32指令是否希望在寄存器d10 [0]和d10 [1]的兩個32位部分中加載值?
0.5
恰好是+16*(2^-5)
(n = 16,r = 5,請注意它不是手冊中的2-r,而是2升至-r),所以移動是一個不錯的值。
換句話說,0x0.8也應該工作(盡管我無法測試非常匯編程序,但十六進制浮點語法會有所不同)
該手冊還說:
imm是由數據類型指定的類型的常量。 復制它以填充目標寄存器。
如我所讀,它將填充寄存器的整個(兩個部分)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.