我有一个奇怪的情况,我不确定它是否是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而不是立即值。我该怎么做才能解决这个问题?