将值移动到xmm寄存器中的唯一方法是先将值移动到整数寄存器中,不知道它们被称为什么,然后再移动到xmm寄存器中。
mov [eax], (float)1000 ; store to memory
movss xmm1,[eax] ; reload
或
mov eax, 1000 ; move-immediate integer
cvtsi2ss xmm1,eax ; and convert
还是有别的办法?有没有一种方法可以直接将一个值移动到xmm寄存器中,就像这样:movss xmm1,(float)1000
发布于 2017-12-23 03:31:57
没有使用立即数加载SSE寄存器的指令。常见的用法是从全局常量中加载所需的值:
const dd 1000.0
...
movss xmm0,[const]
发布于 2021-04-05 07:08:38
这取决于汇编器。
UASM:
LOADSS xmm1,1000.0
ASMC、FASM、POASM、JWasm:
mov eax,1000.0
movd xmm1,eax
NASM:
mov eax,__?float32?__(1000.0)
movd xmm1,eax
MASM、YASM、Sol_Asm:
mov eax,447A0000h
movd xmm1,eax
您还可以使用在数据部分中创建常量的宏。UASM已经有一个内置宏FP4
movss xmm1,FP4(1000.0)
如果使用ASMC、POASM、JWasm或MASM,则可以定义此宏:
FP4 MACRO value
LOCAL vname
.const
align 4
vname REAL4 value
.code
EXITM <vname>
ENDM
https://stackoverflow.com/questions/47946389
复制相似问题