我正在尝试引导本地内核。我已经成功地转移处理器进入长模式,但随后QEMU报告下列指令三重故障:movq导致三重故障
movq %rax, ___stack_chk_guard(%rip)
为什么会movq
原因三的错吗? (请张贴任何和所有的理论,我将与意见作出回应,如果他们不适用,或者如果我需要更多的信息。)
我正在尝试引导本地内核。我已经成功地转移处理器进入长模式,但随后QEMU报告下列指令三重故障:movq导致三重故障
movq %rax, ___stack_chk_guard(%rip)
为什么会movq
原因三的错吗? (请张贴任何和所有的理论,我将与意见作出回应,如果他们不适用,或者如果我需要更多的信息。)
我能想到的下列可能性:
地址不是正确对齐(MOVQ大概需要64位对齐,这取决于你的处理器设置)
地址是无法访问的,但我想你知道数据是存在(特别是因为你使用%RIP)
如果发生“常规”异常(例如分段故障)并且您没有异常处理程序中断,则会发生双重故障和三重故障异常。这条指令发生的实际故障不是三重故障,而是一些其他故障(例如分段故障)。 –