【发布时间】:2021-12-28 21:22:47
【问题描述】:
此代码按预期工作:
section .bss
var2: DB ?
X: DW ? ; works
由于保留顺序相反,代码无法组装:
section .bss
X: DW ?
var2: DB ? ; error with lines in other order
我得到了这个错误,即使我没有在程序的另一部分使用这个标签,var2(事实上,这是可重现的组装只是那个代码块作为一个 3-行文件)。
error: label `var2' changed during code generation [-w+error=label-redef-late]
我认为var2 变量被X 变量覆盖,因为它是一个单词,占 2 个字节。
我正在使用 NASM 版本 2.15.04 来组装此代码(也可在 2.15.05 中重现)。
【问题讨论】:
-
该文档适用于 NASM 的 2.11 版本。您可以从2.15 看到支持
?语法。 ``` 从 NASM 2.15 开始,实现了以下类似 MASM 的功能:A ?声明未初始化存储的参数``` -
可能是 NASM 中的错误?
-
出于好奇,如果您将
resb 1和resw 1替换为db/dw ?,这是否有效? -
@Arkku 是的,
resb和resw可以正常工作。 -
好的,现在可以使用 2.15.04 和 .05 的更新代码重现错误,抱歉造成混淆。是的......看起来像一个错误。