首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将浮点常量值移入xmm寄存器?

如何将浮点常量值移入xmm寄存器?
EN

Stack Overflow用户
提问于 2017-12-23 03:21:47
回答 2查看 5.9K关注 0票数 5

将值移动到xmm寄存器中的唯一方法是先将值移动到整数寄存器中,不知道它们被称为什么,然后再移动到xmm寄存器中。

代码语言:javascript
运行
复制
mov   [eax], (float)1000   ; store to memory
movss xmm1,[eax]           ; reload

代码语言:javascript
运行
复制
mov        eax,  1000       ; move-immediate integer
cvtsi2ss   xmm1,eax         ; and convert

还是有别的办法?有没有一种方法可以直接将一个值移动到xmm寄存器中,就像这样:movss xmm1,(float)1000

EN

回答 2

Stack Overflow用户

发布于 2017-12-23 03:31:57

没有使用立即数加载SSE寄存器的指令。常见的用法是从全局常量中加载所需的值:

代码语言:javascript
运行
复制
const   dd 1000.0

...

        movss xmm0,[const]
票数 6
EN

Stack Overflow用户

发布于 2021-04-05 07:08:38

这取决于汇编器。

UASM:

代码语言:javascript
运行
复制
LOADSS xmm1,1000.0

ASMC、FASM、POASM、JWasm:

代码语言:javascript
运行
复制
mov eax,1000.0
movd xmm1,eax

NASM:

代码语言:javascript
运行
复制
mov eax,__?float32?__(1000.0)
movd xmm1,eax

MASM、YASM、Sol_Asm:

代码语言:javascript
运行
复制
mov eax,447A0000h
movd xmm1,eax

您还可以使用在数据部分中创建常量的宏。UASM已经有一个内置宏FP4

代码语言:javascript
运行
复制
movss xmm1,FP4(1000.0)

如果使用ASMC、POASM、JWasm或MASM,则可以定义此宏:

代码语言:javascript
运行
复制
FP4 MACRO value
 LOCAL vname
 .const
 align 4
 vname REAL4 value
 .code
 EXITM <vname>
ENDM
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47946389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档