【问题标题】:Assembly issue with '[' [closed]'['的装配问题[关闭]
【发布时间】:2019-04-30 12:38:23
【问题描述】:

简而言之:当我尝试组装我的代码时,我得到了这个
Error: invalid char '[' beginning operand 2 '[esp+4]'

Error: invalid char '[' beginning operand 1 '[edx]'

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

mov edx, [esp + 4]
lidt [edx]
sti
ret

我正在使用gcc -m32 -c -o idtasm.o idtasm.S 组装。

谢谢你的回答,
真诚的 G3bE

【问题讨论】:

  • 这不是 gnu 汇编语法。您将需要对其进行调整。使用该文件,您可能会通过传递-masm=intel 并将global 更改为.global(带点)并删除所有extern 行。或者,您可以只使用该代码可能用于的nasm
  • 谢谢。我使用了nasm -f elf -o idtasm.o idtasm.S,它成功了!
  • @G3bE 非常好!将此作为您自己问题的答案发布,以便其他人注意到。

标签: gcc assembly x86


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多