我熟悉 TASM,但不太熟悉 NASM。我读过 NASM 允许使用本地标签,在名称前用一个点表示。例如,代码
.loop: ;some code
jmp .loop
Run Code Online (Sandbox Code Playgroud)
定义一个名为.loop的本地标签,引用的地址在后面的指令jmp中使用。
但是,在线阅读一些代码示例时,我发现类似的行
.label1:
push label1
;other push
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为 label1 没有在任何地方定义(所以它必须以某种方式与 .label1 相关),但我既不明白这种推送的含义,也不明白代码是否应该是 push .label1 。有什么作用push label1
?