我正在创建一个小例程,用lidt
指令加载idtr
寄存器。 我创造了这个代码 -错误:操作码和操作数的组合无效 - nasm
global load_idt
load_idt:
mov eax, esp
add eax, 4
lidt eax ;<-----------------LINE 9
ret
但是,当我编译这个使用NASM,我得到一个错误 -
kernel/kernel_start.asm:9: error: invalid combination of opcode and operands
我的编译命令是 -
nasm kernel/kernel_start.asm -f elf32 -o kernel/kernel_start.o
任何人都可以指出这个程序中的错误?
助记符是'LIDT m16&32' ...你的意思是'lidt [eax]'? – Tommylee2k
我想用'load_idt()'调用C中的函数'。我必须使用'[eax]'吗?它不是指向idtr的价值而不是它的地址? @ Tommylee2k –