asm("lidt (%0)" : : "p"(&idtr));
以上语句将用于在我的IA-32操作系统中定义IDTR。但是出于某种原因,编译器会对它进行扼流:
kernel/kernel.c:52:2: error: invalid 'asm': invalid expression as operand
asm("lidt (%0)" : : "p"(&idtr));
^
有谁知道我在这里做错了什么?如果您需要更多背景来回答我的问题,请说出来,我很乐意提供。
答案 0 :(得分:3)
除了指示之外,你还有一件坏事。 正确的方法:
asm("lidt %0" : : "m"(idtr));