我可以使用以下命令將浮點數保存到 32 位暫存器中:
mov ebx,__?float32?__(1.23)
movd xmm1,ebx ; works
但是,當我嘗試以下代碼時,出現錯誤:
mov bx,__?float16?__(1.23)
movd xmm1,bx ; /tmp/SASM/program.asm:9: error: invalid combination of opcode and operands
如何使用mov將 8.8 浮點數保存到 16 位暫存器中?還是有其他方法可以做到這一點?
uj5u.com熱心網友回復:
定點值具有隱含的移位值。
要在 NASM 中的暫存器中保存 8.8 定點值,您必須自己進行隱含移位;像也許mov ebx,320 ;1.25 << 8 = 320。
注意:基于這個 stackoverflow 問題,我認為在 NASM 中組裝時沒有辦法將浮點常量運算式的結果轉換為整數,因此更簡潔的東西(如假設的mov ebx, __?int32?__ (1.25 << 8))將不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528230.html
標籤:Intel Collective 部件x86鼻涕虫固定点
下一篇:如何在MASM中跨段填充塊?
