2017-10-13 87 views
0

表达的意思是:什么是双美元符号在x86汇编(NASM)

times 512-($-$$) db 0 

我知道什么是美元符号的手段,但我不知道这意味着什么时,它的两倍。

双美元符号是什么意思?

+1

未来读者:对于'$',请参阅https://stackoverflow.com/questions/10361231/what-does-the-dollar-sign-mean-in-x86-assembly-when-calculating-string-lengt。 (其中一个答案也提到'$$'。) –

回答

9

当一切都失败了,阅读Fine Manual(第3.5节“表达式”):

NASM支持在表达式中两个特殊的记号,让计算涉及到当前的安装位置:在$和$$令牌。 $计算到包含表达式的行的开头的程序集位置;所以你可以使用JMP $编码一个无限循环。 $$评估到当前部分的开始;所以你可以通过使用($ - $$)来告诉你所在的部分有多远。

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

+0

您是否意识到如何在GAS中完成这项工作? - 看起来你可以。请参阅[this](https://stackoverflow.com/questions/47859273/calculating-padding-length-with-gas-att-directives-for-a-boot-sector)问题。 – sherrellbc

相关问题