什么是 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?的主要内容,如果未能解决你的问题,请参考以下文章