我又来了,我的idt.S文件(使用gcc编译的Intel语法)出现了一个新问题。当我尝试编译以下代码时:
load_idt:
mov edx, (esp + 4) ; On this line
lidt (edx)
sti
ret
我收到一个错误,但我真的不知道如何修复它:
Error: too many memory references for `mov'
我又来了,我的idt.S文件(使用gcc编译的Intel语法)出现了一个新问题。当我尝试编译以下代码时:
load_idt:
mov edx, (esp + 4) ; On this line
lidt (edx)
sti
ret
Error: too many memory references for `mov'
gcc -c -m32 -masm=intel idt.S -o idt.o
.intel_syntax noprefix
。默认情况下,GCC将汇编.s
和.S
文件时假定使用英特尔语法,要求在所有寄存器前加上%
前缀。该指令可消除此要求。[
和]
而不是圆括号(
和)
。#
开头,而不是;
。代码应如下所示:
.intel_syntax noprefix
load_idt:
mov edx, [esp + 4] # On this line
lidt [edx]
sti
ret