微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。