Gcc 与'的装配问题;[';

Gcc 与'的装配问题;[';,gcc,assembly,x86,Gcc,Assembly,X86,简而言之:当我试图汇编代码时,我得到了这个 错误:无效字符“[”起始操作数2'[esp+4]” 和 错误:无效字符'['开始操作数1'[edx]' 最相关的代码已经在错误中,但是我从中获得了代码。要再现错误,只需使用部分中的这个小模式。text和如下所示的命令: mov edx, [esp + 4] lidt [edx] sti ret 我正在使用gcc-m32-c-o idtasm.o idtasm.S进行组装 感谢您的回答, 感谢Jester,我找到了一个解决方案:汇编代码是为nasm编写

简而言之:当我试图汇编代码时,我得到了这个
错误:无效字符“[”起始操作数2'[esp+4]”


错误:无效字符'['开始操作数1'[edx]'

最相关的代码已经在错误中,但是我从中获得了代码。要再现错误,只需使用
部分中的这个小模式。text
和如下所示的命令:

mov edx, [esp + 4]
lidt [edx]
sti
ret
我正在使用
gcc-m32-c-o idtasm.o idtasm.S
进行组装

感谢您的回答,

感谢Jester,我找到了一个解决方案:汇编代码是为nasm编写的,因此将其与以下命令一起使用:
nasm-f elf-o idtasm.o idtasm.S
-f elf正在替换gcc的-c-m32,如果我理解正确的话。

这不是gnu汇编程序语法。您需要调整它。使用该文件可以通过传递
-masm=intel
并将
global
更改为
.global
(带一个点),您就可以逍遥法外了删除所有的
extern
行。或者,你可以使用
nasm
,这可能是该代码的目的。谢谢。我使用了
nasm-f elf-o idtasm.o idtasm.S
,效果很好!@g3非常好!将此作为你自己问题的答案发布,以便其他人注意。