什么是 SSE 相当于 fstp?

Posted

技术标签:

【中文标题】什么是 SSE 相当于 fstp?【英文标题】:What's the SSE equivalent of fstp? 【发布时间】:2013-09-08 20:58:43 【问题描述】:

如果我弄错了,请纠正我,但是 fstp 从 FPU 堆栈的顶部弹出值,例如 st0?

即 fstp 第二[rsp]

如果我在 SSE 寄存器 xmm0 中有值,那么等价的值是多少?我想打印存储在寄存器中的值。

【问题讨论】:

【参考方案1】:

SSE 不使用堆栈,它的寄存器可以直接访问。如果要显示 MMX 或 SSE 寄存器的内容,则“存储”指令是合适的。它将值复制到程序内存中的原始数据类型数组中(尽管在许多情况下,您可以简单地将 SSE 变量转换为高级语言,通过强制寄存器溢出到内存,获取其地址可能会干扰优化。首选使用加载和存储内在函数。)

例如,

MOVUPD

MOVUPS

说明。

【讨论】:

嗯.. 你能举一个从 SSE 寄存器输出值的例子吗? 谷歌搜索“MOVUPS 示例”真的太难了吗?这是一个看起来相当完整的:cs.uaf.edu/2011/fall/cs441/lecture/09_29_SSE.html 这需要将值存储在全局中。有没有办法从rax printf? @user1787038:该示例使用全局,但您可以使用相对于堆栈指针的地址同样容易。 RAX 是一个整数寄存器,您不会将 SIMD 引擎中的浮点值放入其中。 如果你想printf() 从汇编代码 那么浮点参数在%xmm0 之后(至少对于第一个...第六个浮点参数)。您无需将它们转移

以上是关于什么是 SSE 相当于 fstp?的主要内容,如果未能解决你的问题,请参考以下文章

汇编 浮点指令FLD,FSTP,FADD与FPU寄存器

CPU支持SSE3有啥作用?对游戏有好处吗?

寻址非整数地址和 sse

指令集的相关问题!

SSE 和超线程

职位中SSE,SSA和SA是啥意思?是啥的缩写?