gpt4 book ai didi

gcc - 执行 `emms` MMX指令时出现总线错误

转载 作者:行者123 更新时间:2023-12-04 14:44:01 24 4
gpt4 key购买 nike

我正在使用内联汇编开发一些软件的端口,因为我们在 X32 下从 Debian 维护者那里获得了一些错误报告.代码在 X86 和 X64 下都很好。

我们在 emms 指令上发现了一个总线错误:

   ...
0x005520fd <+3885>: pop %rsp
0x005520fe <+3886>: emms
=> 0x00552100 <+3888>: pop %rbx
0x00552101 <+3889>: jmpq 0x5519e3
0x00552106 <+3894>: nopw %cs:0x0(%rax,%rax,1)
...

根据手册,会引发以下异常:

Exceptions:

RM PM VM SMM Description
#UD #UD #UD #UD If CR0.EM = 1
#NM #NM #NM #NM If CR0.TS = 1
#MF #MF #MF #MF If pending FPU Exception

这是 MMX 状态寄存器中使用的掩码:

mxcsr    0x1f80    [ IM DM ZM OM UM PM ]

我认为我无法访问控制寄存器来确定究竟是什么导致了异常,所以我无法找到总线错误的原因。

总线错误的一些潜在原因是什么?或者我该如何解决这个问题?


这是信息 float :

(gdb) info float
R7: Empty 0xffffffffffffffffffff
R6: Empty 0xffffa5a5a5a5a5a5a5a5
R5: Empty 0xfffffedcba9876543210
R4: Empty 0xffffb182db48cf349120
R3: Empty 0xffff926cd0b6a839b535
R2: Empty 0xfffff373de2d49584e7a
R1: Empty 0xffff16166e76b1bb925f
=>R0: Empty 0xffff24f0130c63ac9332

Status Word: 0x0000
TOP: 0
Control Word: 0x037f IM DM ZM OM UM PM
PC: Extended Precision (64-bits)
RC: Round to nearest
Tag Word: 0xffff
Instruction Pointer: 0x00:0x00000000
Operand Pointer: 0x00:0x00000000
Opcode: 0x0000

这是来自信息寄存器:

(gdb) info registers
rax 0xffffcb58 0xffffcb58
rbx 0x30 0x30
rcx 0x14f3 0x14f3
rdx 0x61d560 0x61d560
rsi 0xffffcb08 0xffffcb08
rdi 0x14 0x14
rbp 0xffffcb58 0xffffcb58
rsp 0xb62f7cbfffffc8d8 0xb62f7cbfffffc8d8
r8 0x0 0x0
r9 0x40 0x40
r10 0x2e676e696e6e7572 0x2e676e696e6e7572
r11 0x246 0x246
r12 0x9028a0 0x9028a0
r13 0xffffcaf0 0xffffcaf0
r14 0x8f6120 0x8f6120
r15 0xffffca6c 0xffffca6c
rip 0x552100 0x552100
eflags 0x10246 [ PF ZF IF RF ]
cs 0x33 0x33
ss 0x2b 0x2b
ds 0x2b 0x2b
es 0x2b 0x2b
fs 0x63 0x63
gs 0x0 0x0

这是 MMX 状态寄存器位的突破:

  IM - Invalid Operation Mask
DM - Denormalized Mask
ZM - Divide By Zero Mask
OM - Overflow Mask
UM - Underflow Mask
PM - Precision Mask

最佳答案

EMMS 正在执行,没有问题,如箭头和 rip 的值所示错误是以下 pop 因为 rsp 指向无效内存。 rsp 的正确值小于 0x100000000。

关于gcc - 执行 `emms` MMX指令时出现总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com