【问题标题】:What does double dollar sign mean in x86 assembly (NASM)x86 程序集 (NASM) 中的双美元符号是什么意思
【发布时间】:2018-03-25 09:13:41
【问题描述】:

表达式为:

times 512-($-$$) db 0

我知道美元符号的含义,但我不知道它是双倍的含义。

双美元符号是什么意思?

【问题讨论】:

标签: assembly x86 nasm


【解决方案1】:

当所有其他方法都失败时,阅读Fine Manual(第 3.5 节“表达式”):

NASM 支持表达式中的两个特殊标记,允许计算涉及当前装配位置:$ 和 $$ 标记。 $ 计算为包含表达式的行首的装配位置;因此您可以使用 JMP $ 编写无限循环。 $$ 计算为当前部分的开头;因此,您可以使用 ($−$$) 来判断您在该部分中的距离。

所以你问题中的例子只是用零将当前部分填充到 512 的大小。

【讨论】:

  • 您知道如何在 GAS 中做到这一点吗? ——看来可以。请参阅this 问题。
【解决方案2】:

$$ 计算为当前节的开头。您可以在此处的 nasm 文档中找到它:https://nasm.us/doc/nasmdoc3.html#section-3.5

【讨论】:

    猜你喜欢
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2021-11-09
    • 2012-02-24
    相关资源
    最近更新 更多