Pir*_*ate 1 x86 assembly gcc inline-assembly
我发现可能是通过SGDT汇编命令读取GDTR。我将这段程序集插入我的C代码中Error: operand type mismatch for 'sgdt'
unsigned long j;
asm("sgdt %0" : "=r"(j));
Run Code Online (Sandbox Code Playgroud)
sgdt只能接受一个内存操作数,而不是一个寄存器,因此必须为"=m"。操作数大小为8 + 2字节(对于x86-64),因此您需要一个结构;使用long会导致存储在对象外部。
阅读手册! https://www.felixcloutier.com/x86/sgdt
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |