内联汇编里获得idt的内容 语法异常

内联汇编里获得idt的内容 语法错误struct idtr idtr//idtr结构体Assembly code__asm__ (sidt %0:a(i

内联汇编里获得idt的内容 语法错误
struct idtr idtr;//idtr结构体

Assembly code
__asm__ (                "sidt %0"                 :"=a"(idtr)                 :                 :"memory"                         );


编译结果是 error: impossible constraint in ‘asm’
个人感觉好象是输出寄存器中的 :"=a"(idtr)的格式错了
不过不知道怎么改 
请高手指点一下

[解决办法]
__asm__ __violate__(
"sidt %0"
:"=r"(idtr)
);

再试下
[解决办法]
探讨

引用:

__asm__ __violate__(
"sidt %0"
:"=r"(idtr)
);
再试下

谢谢 我把它改成 :=m"(idtr)编译通过了
然后执行了 打印出idt的内容
执行多次 居然发现中断描述符表的基地址不确定,是变化的,而长度是一直不变的0x7ff
我觉得中断描述符表的基地址在运行的系统中应该是不……