Что не так со следующим кодом?
__asm__("mov %0, %%eax" : :"a" (ptr));
__asm__(".intel_syntax noprefix");//switch to intel syntax.
asm("lidt [eax]");
Я получаю ошибку при компиляции, как это:
/tmp/cciOoSro.s: Assembler messages:
/tmp/cciOoSro.s:1737: Error: no such instruction: popl %ebp
Это для загрузки таблицы дескрипторов прерываний IDT для моей ОС.Но, кажется, что-то не так.Я не привык к синтаксису.Я привык к синтаксису Intel.
функция состоит в том, чтобы загрузить указатель моего idt в процессор, используя lidt.
void setup_idt(uint32 ptr) //to setup the idt i.e to load the idt's pointer
{
__asm__("mov %0, %%eax" : :"a" (ptr));
__asm__(".intel_syntax noprefix");//switch to intel sytax.
__asm__("lidt [eax]");
}