Open2

作って理解するOS x86系コンピュータを動かす理論と実装

bianchibianchi

entry:
  jmp $ 
  times 510 - ($ - $$) db 0x00
  db 0x55, 0xAA

jmp $

$は現在の命令のアドレス

times 510 - ($ - $$) db 0x00

timesはディレクティブらしいのだが、どこにそれが書かれたリファレンスがあるのかわかっていない
$は現在の命令のアドレス
$$はセクションの開始アドレス
($ - $$)は、現在の命令のアドレスからセクションの開始アドレスを引いた結果
で、セクション内での現在の位置(offset)を表す
510 - ($ - $$)で、510から現在の位置を引く

db 0x00
ディレクティブで指定された回数だけ0x00を繰り返し挿入
dbのリファレンス

db 0x55, 0xAA

ブートセクタの終了を示す0x55,0xAAとブートフラグを記入

bianchibianchi
     1 00000000 EBFE                    jmp $
     2 00000002 00<rep 1FCh>            times 510 - ($ - $$) db 0x00
     3 000001FE 55AA                    db 0x55, 0xAA

出力されたリスティングファイル

jmp $が2バイトのバイトコードEBFEとして変換された
FE$に対応するが、これは符号付き8ビット整数で-2を表す
つまり2バイト前にjmpすると言う意味