簡體   English   中英

在ARM寄存器中加載立即浮點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM