读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

内联汇编里获得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
我觉得中断描述符表的基地址在运行的系统中应该是不……

读书人网 >汇编语言

热点推荐