13

IBM PCアーキテクチャが、ブート シグネチャ55 AAのブートセクタの最後の 2 バイトでマジック ナンバーを使用するのはなぜですか?

私はそれがビットパターンと関係があると思います: 01010101 10101010、しかし何がわからない.

私の推測は次のとおりです。

  1. BIOS は、これらのバイトに対していくつかのビット単位および/または xor 操作を行ってそれらを比較します。たとえば、結果が 0 の場合、それを簡単に検出してどこかにジャンプできます。
  2. これらのビットの一部が破損している場合、それが検出されたり、ディスク上のこの特定のビットが破損したりした場合でも、システムを適切に起動するための有効な署名と見なされる可能性があるという、パリティ/整合性のセーフガードになる可能性があります。

誰かがこのしつこい質問に答えるのを手伝ってくれませんか?

これらのビット パターンについてどこかで読んだことがありますが、その場所は覚えていません。また、ネット上では何も見つからないため、紙の本に掲載されている可能性があります。

4

1 に答える 1

9

10101010 01010101 がいいビットパターンに思えたので勝手に選んだと思います。Apple ][+ リセット ベクトルは、チェック値を生成するために $A5 で (10100101) に xor されました。一部のマシンでは、ブートの検証に、より「具体的な」ものを使用していました。PET 派生マシン (Commodore Business Machines の VIC-20 および Commodore 64 など) の場合、アドレス $8000 にある起動可能なカートリッジ イメージは、アドレス $8004 ($A000 から始まるカート) に格納された PETASCII 文字列「CBM80」を持ちます。 $A004 に文字列 "CBMA0" が含まれるなど) ですが、IBM は、他のマシンのディスクが挿入され、最初のセクターの最後の 2 バイトに $55AA が含まれるとは考えていなかったと思います。

于 2012-06-17T21:50:56.043 に答える