8086 プロセッサの条件付きジャンプ回路のリバース エンジニアリング

Intel は 1978 年に 8086 マイクロプロセッサを導入し、コンピューティングに大きな影響を与えました。 Ken Shirriff は、8086 のシリコン ダイの回路を調べることでリバース エンジニアリングを行っており、条件付きジャンプがどのように実装されているかを調べています。 条件付きジャンプは、条件に基づいて実行の流れを変更する、あらゆる命令セットの重要な部分です。 この命令は単純に見えるかもしれませんが、CPU の多くの部分が関係しています。8086 は、専用の条件ロジックと共にマイクロコードを使用します。

8086 プロセッサには、キャリー、パリティ、補助キャリー、ゼロ、符号、オーバーフローの 6 つのステータス フラグがあります。 これらのフラグは、結果に基づく算術および論理演算によって更新されます。 8086 には、16 の異なる条件付きジャンプ命令があります。 ステータスフラグをテストし、ゼロ、未満、または奇数パリティなどの条件が満たされた場合にジャンプします。 これらの指示は非常に重要です。 if ステートメント、ループ、比較など。 16 という数字は、以前の CPU に比べて大きな数です。8080、6502、および Z80 にはすべて、3 ビットで指定される 8 つの条件付きジャンプがありました。

機械語では、条件付きジャンプ オペコードの後に​​符号付きオフセット バイトが続きます。これは、現在のプログラム カウンタを基準にして、127 バイト先から 128 バイト後方までの位置を指定します。 これはかなり小さい範囲ですが、利点は、オフセットが 1 バイトに収まり、コード サイズが小さくなることです。 ループや条件付きコードなどの典型的なアプリケーションの場合、通常、ジャンプはコードの同じ近傍にとどまるため、トレードオフは価値があります。

8086 のマイクロコードは Andrew Jenner (リンク) によってダイの写真から逆アセンブルされたので、8086 が各マシン命令に対して実行しているマイクロ命令を正確に確認できます… 簡単に言えば、条件付きジャンプ コード (Jcond) は分岐オフセット バイトを取得します。 適切な条件をテストし、条件が満たされると、相対ジャンプ マイクロコード (RELJUMP)。 お茶 RELJMP コードは、オフセットをプログラム カウンターに追加します。 いずれの場合も、マイクロコード ルーチンは、次の命令を実行すると終了します (RNI)。

詳細については、こちらの Ken のブログをご覧ください。

ブレッドボードやはんだ付けをやめて、すぐに作り始めましょう! Adafruit の Circuit Playground には、LED、センサー、ボタン、ワニ口クリップ パッドなどがぎっしり詰まっています。 ドラッグ アンド ドロップの MakeCode プログラミング サイトを使用して Circuit Playground でプロジェクトを数分で構築したり、code.org の CS Discovery クラスを使用してコンピューター サイエンスを学習したり、CircuitPython にジャンプして Python とハードウェアを一緒に学習したり、TinyGO を使用したり、Arduino を使用したりすることもできます。 IDE。 Circuit Playground Express は、CircuitPython、MakeCode、および Arduino をサポートする最新かつ最高の Circuit Playground ボードです。 強力なプロセッサ、10 個の NeoPixel、ミニ スピーカー、赤外線送受信、2 つのボタン、スイッチ、14 個のワニ口クリップ パッド、および多くのセンサー (静電容量式タッチ、IR 近接、温度、光、動き、音) を備えています。 手のひらに収まるサイズのエレクトロニクスとコーディングの世界があなたを待っています。

Adafruit の Discord チャンネルで 35,000 人以上のメーカーに参加して、コミュニティの一員になりましょう! http://adafru.it/discord

共有する素晴らしいプロジェクトがありますか? Electronics Show and Tell は、毎週水曜日の午後 7 時 (米国東部時間) に開催されます。 参加するには、YouTube にアクセスして番組のライブ チャットをチェックしてください。そこにリンクを掲載します。

毎週水曜日の午後 8 時 (米国東部時間) に、Ask an Engineer に参加してください!

InstagramでAdafruitをフォローして、トップシークレットの新製品、舞台裏などをご覧ください https://www.instagram.com/adafruit/

CircuitPython – マイクロコントローラーをプログラムする最も簡単な方法 – CircuitPython.org

ウェアラブル、「メーカー ビジネス」の運営、電子的なヒントなどに関する唯一のスパムのない毎日のニュースレターを入手してください! AdafruitDaily.comで購読してください!

コメントはまだありません。

Adafruit には、「お互いに優れている」というコメント ポリシーがあります。 ここのコミュニティを前向きで役立つものに保つためにご協力ください。 トピックに固執し、すべての年齢とスキル レベルの作成者を尊重してください。 親切に、スパムメールを送信しないでください – ありがとうございます!

Leave a Comment

Your email address will not be published. Required fields are marked *