NASMマニュアルはセクション3.5で$トークンに次のものが含まれます。
$表現
を含む行の先頭に組立位置に評価し、前のセクション3.1でありソース行に関する注釈:
NASMは行継続文字としてバックスラッシュ(\)を使用します。行がバックスラッシュで終わる場合、次の行はバックスラッシュで終わる行の一部と見なされます。
データを必要に応じて割り当てます(文字列を含む20バイトの配列、最後に2番目の最後のインデックスまでの下線、改行文字):
section .data
buf: ; define 20-byte buffer
db 'Hello, world!' ; declare string constant
times 19-$+buf db '_' ; declare byte with value '_' after string and up to index 19 in buffer
db 0xa ; declare byte with newline character 0xa (10) at end of buffer
len equ $-buf ; define len to be size of buf
それは動作しますが、私は BUF $ +は、4行目の代わりに$ -bufの使用されている理由について少し混乱しています。私の理解では、各行はソース行、$は行の先頭を意味し、bufは "buf"というラベルの付いたデータの先頭を指します。
私は bufを$ +の代わりに$ -bufを使用している場合は、NASMは吐き出す:
error: non-constant argument supplied to TIMES
はここで何が起こっていますか?
私の文言をより正確にする方法を指摘してくれてありがとう! –