写一个 OS; asm 关键字问题

Writing an OS; asm keyword troubles

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));
  ^

有谁知道我在这里做错了什么?如果您需要更多上下文来回答我的问题,请说出来,我很乐意提供。

除了说明之外,你把所有可能的地方都弄错了。 正确方法:

asm("lidt %0" : : "m"(idtr));