我有一个奇怪的情况,我不确定这是 GNU 汇编程序的错误还是我做错了什么。我认为我最终会切换到 nasm,但我正在使用一些为 GNU 汇编程序编写的宏。
例如,我有一个带有一些变量的标签,如下所示:
msg1:
.asciz "hello world"
var1:
.long 0
现在我希望 mov eax, var1 到 mov 指向 var1 的指针到 eax,而 mov eax, [var1] 应该将该变量的内容移动到 eax,但两者都给了我相同的代码,给了我那个变量的内容。我知道我可以使用 LDA,但这不是必需的。如果我想将指针推送到某个字符串,我必须做类似的事情
lea eax, msg1
push eax
另一个问题。我用 .set 定义了一个常量,如下所示:
.set const1 0x1000
mov eax, const1 在 0x1000 处为我提供内存内容,而不是立即值。我能做些什么来解决这个问题?