小编Joe*_*Joe的帖子

我们可以在常规寄存器中存储浮点吗?

据我了解,浮点存储在XMM寄存器中,而不是诸如的通用寄存器中eax,因此我做了一个实验:

float a = 5;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,a被存储1084227584XMM寄存器中。这是程序集版本:

.text
        .global _start
.LCO:
        .long 1084227584
_start:
        mov .LCO, %eax
        movss .LCO, %xmm0
Run Code Online (Sandbox Code Playgroud)

执行上述组件和使用它的调试gdb显示,在值eax将是1084227584,然而,在值ymm05

这是我的问题:

1- XMM寄存器有什么特别之处?除了SIMD指令,它们是唯一存储浮点的寄存器类型吗?

为什么不能在常规寄存器中设置相同的位?

2- floatdouble值始终存储为浮点吗?

我们永远不能将它们存储为fixed pointC或汇编语言吗?

c floating-point assembly x86-64

1
推荐指数
1
解决办法
260
查看次数

标签 统计

assembly ×1

c ×1

floating-point ×1

x86-64 ×1