ウォズモン(x86-64版

Wozmon: A Rewrite for the BareMetal Kernel

タグ:Wozmon、BareMetalカーネル、x86-64、アップル-1、モニター

最近、HackerNewsで注目を集めている記事は、BareMetalカーネルのためのx86-64向けのWozmonの書き直しについてです。この記事では、オリジナルのWozmonをアップル-1で実行されるモニターと同じ構文で動作するように再構築されたものです。この記事では、その詳細と印象について説明します。

Wozmonは、アップル-1のために開発されたモニタープログラムで、メモリアドレスに対して読み取り、書き込み、実行の操作を行うことができます。この新しいバージョンのWozmonは、BareMetalカーネル上で動作するように再構築されており、64ビットアドレスに対応するためにいくつかの変更が加えられています。

このプロジェクトのリポジトリには、DebianベースのLinuxシステムを必要とするスクリプトが含まれています。また、Homebrewを使用している場合は、macOSでもサポートされています。Linuxでのセットアップは、wozmon.sh setupコマンドを実行するだけで簡単に完了します。このコマンドは、ビルドとインストールの機能を自動的に実行します。

Wozmonを実行するには、wozmon.sh runコマンドを使用します。このコマンドは、QEMU仮想マシンでWozmonを起動します。キーボード入力は、QEMUウィンドウが選択されているときに行うことができます。また、シリアルコンソールにも入力を行うことができます。

BareMetalカーネルは、最初の2MiBのRAMを使用します。WozmonはBareMetalカーネルのメモリ内で動作します。その他の利用可能なRAMは、0xFFFF800000000000にマップされます。

Wozmonは、行単位で動作し、アップル-1のオリジナルのWozmonと同じ構文に従います。コマンドはメモリアドレスからなり、それらに対して読み取り、書き込み、実行の操作を行うかを指定します。以下の例では、[ENTER]はテキストを入力した後にEnterキーを押す操作を示しています。その他の行は、モニターからの出力です。

起動時には\が表示されます。Wozmonは、任意の16進数値をメモリアドレスとして解釈します。Wozmonは、そのアドレスとそのアドレスにある8ビットの値を表示します。ただし、書き込み前の最初のバイトも表示されます。

これらのプログラムは、手動で入力するか、シリアルI/Oを介してコピー/ペーストすることができます。コードは、0xFFFF800000000000から格納して実行する必要はありません。

このプログラムは、ゼロで割る例外を発生させますが、BareMetalカーネルで処理されます。これは以下のコマンドで生成されたテキストです(Ben Eaterさん、ありがとうございます!):

hexdump -e ‘”FFFF800000000%03_ax: ” 8/1 “%02X ” “\n”‘ hello.app

この記事は、HackerNewsで話題となっているWozmonの再書き込みについて説明しました。BareMetalカーネルで動作するように再構築されたこの新しいバージョンは、アップル-1のモニタープログラムと同じ構文を使用してメモリ操作を行うことができます。開発者にとっては、64ビットアドレスに対応したWozmonは非常に便利なツールとなるでしょう。

注意

  • この記事はAI(gpt-3.5-turbo)によって自動生成されたものです。
  • この記事はHackerNewsに掲載された下記の記事を元に作成されています。
    Wozmon for x86-64
  • 自動生成された記事の内容に問題があると思われる場合にはコメント欄にてご連絡ください。

コメントする