xmm 和 ymm 寄存器x86-64有关系吗?

问题描述

我在指令 vmovdqu (%rsi),%xmm2 处有一个程序的核心转储(商业、封闭源代码,不是我写的),我想使用 info regs 检查 gdb 中的寄存器值。 令人惊讶的是,cpu(AMD EPYC 7401P 24 核处理器)似乎有 ymm,但没有 xmm 寄存器。 我不是 x86-64 汇编专家,但我对 x86 相当了解。

谁能解释一下? Gdb 版本为 10.1。

这是寄存器转储的一个例子(只是开始):

gdb) info registers all
rax            0x0                 0
rbx            0x104c400           17089536
rcx            0x20                32
rdx            0x35                53
rsi            0x100000000a0       1099511627936
rdi            0x104c400           17089536
rbp            0x100000000a0       0x100000000a0
rsp            0x7ffcc68b0fa8      0x7ffcc68b0fa8
r8             0xffffffff          4294967295
r9             0xffffffff          4294967295
r10            0x5ab               1451
r11            0x35                53
r12            0x100000000a0       1099511627936
r13            0x7ffcc68b2110      140723639492880
r14            0x0                 0
r15            0x0                 0
rip            0x7f877a1dc86b      0x7f877a1dc86b <__strncasecmp_l_avx+91>
eflags         0x10283             [ CF SF IF RF ]
cs             0xe033              57395
ss             0xe02b              57387
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
st0            0                   (raw 0x00000000000000000000)
st1            0                   (raw 0x00000000000000000000)
st2            0                   (raw 0x00000000000000000000)
st3            0                   (raw 0x00000000000000000000)
st4            0                   (raw 0x00000000000000000000)
st5            0                   (raw 0x00000000000000000000)
st6            0                   (raw 0x00000000000000000000)
st7            0                   (raw 0x00000000000000000000)
fctrl          0x37f               895
fstat          0x0                 0
ftag           0xffff              65535
fiseg          0x0                 0
fioff          0x0                 0
foseg          0x0                 0
fooff          0x0                 0
fop            0x0                 0
mxcsr          0x1fa0              [ PE IM DM ZM OM UM PM ]
ymm0           {
  v16_bfloat16 = {0x0,0x0,0x0},v8_float = {0x0,0xffffffff,v4_double = {0x0,0x7fffffffffffffff,v32_int8 = {0x0 <repeats 14 times>,0xff,0x0 <repeats 16 times>},v16_int16 = {0x0,0xffff,v8_int32 = {0x0,0xffff0000,v4_int64 = {0x0,0xffff000000000000,v2_int128 = {0xffff0000000000000000000000000000,0x0}
}
ymm1           {
  v16_bfloat16 = {0xffff,v8_float = {0xffffffff,v4_double = {0x7fffffffffffffff,v32_int8 = {0x2f,0x65,0x74,0x63,0x2f,0x6f,0x70,0x6d,0x6e,0x69,0x6c,v16_int16 = {0x652f,0x6374,0x6f2f,0x7470,0x6e6d,0x2f69,0x6c63,v8_int32 = {0x6374652f,0x74706f2f,0x6e6d6f2f,0x6c632f69,v4_int64 = {0x74706f2f6374652f,0x6c632f696e6d6f2f,v2_int128 = {0x6c632f696e6d6f2f74706f2f6374652f,0x0}
}
ymm2           {
  v16_bfloat16 = {0x0,v32_int8 = {0x0,0xff <repeats 13 times>,0xff00,v8_int32 = {0xff000000,v4_int64 = {0xffffffffff000000,0xffffffffffffffff,v2_int128 = {0xffffffffffffffffffffffffff000000,0x0}
}
ymm3           {
  v16_bfloat16 = {0x0,0x0 <repeats 17 times>},0xff0000,0xff000000000000,v2_int128 = {0xff0000000000000000000000000000,0x0}
}
...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)