汇编程序 xbegin 引发非法指令
Assembler xbegin raise Illegal instruction
我的汇编代码在调用 xbegin 时引发非法指令。
有什么问题吗?
这是我的代码。
main.c
if ( rtm_begin() == 0 ) {
//do something.
}
rtm.S
rtm_begin:
xbegin 1f
mov [=11=], %rax
retq
1:
mov $-1, %rax
retq
.globl rtm_end
.type rtm_end, @function
.section .text
首先你需要检查你的汇编程序版本是否支持TSX指令。
那么可能是您的 CPU 没有 TSX 功能。根据 Intel® 64 和 IA-32 架构软件开发人员手册,ch.16.3.1.2 Detection of RTM Support:
A processor supports RTM execution if CPUID.07H.EBX.RTM [bit 11] = 1.
An application must check if the processor supports RTM before it uses
the RTM instructions (XBEGI N, XEND, XABORT). These instructions will
generate a #UD exception when used on a processor that does not
support RTM.
同样为了缓解 Zombieload 2 漏洞,OS(相关信息 for Windows, for Linux)
可以禁用 TSX
我的汇编代码在调用 xbegin 时引发非法指令。
有什么问题吗?
这是我的代码。
main.c
if ( rtm_begin() == 0 ) {
//do something.
}
rtm.S
rtm_begin:
xbegin 1f
mov [=11=], %rax
retq
1:
mov $-1, %rax
retq
.globl rtm_end
.type rtm_end, @function
.section .text
首先你需要检查你的汇编程序版本是否支持TSX指令。
那么可能是您的 CPU 没有 TSX 功能。根据 Intel® 64 和 IA-32 架构软件开发人员手册,ch.16.3.1.2 Detection of RTM Support:
A processor supports RTM execution if CPUID.07H.EBX.RTM [bit 11] = 1. An application must check if the processor supports RTM before it uses the RTM instructions (XBEGI N, XEND, XABORT). These instructions will generate a #UD exception when used on a processor that does not support RTM.
同样为了缓解 Zombieload 2 漏洞,OS(相关信息 for Windows, for Linux)
可以禁用 TSX