我正在尝试在 linux x64 上使用/__kernel_vsyscall代替。我读过它可以在英特尔芯片上完成(我有一个),但我找不到如何做到这一点。我有 x32 版本:syscallint 80
int main() {
__asm__(
" movl $1, %eax \n"
" movl $42, %ebx \n"
" call *%gs:0x10 \n"
);
}
可以这样编译和运行它:
% cc -m32 exit42.c -o x
% ./x; echo $?
42
那么,我如何在没有syscall和的情况下在 x64 上调用 vdso 系统调用int 80?