HN 日本語サマリー

← 一覧へ戻る
プログラミング

Dmars – 現代的なCore Warsツールチェーン

Dmars – A modern Core Wars toolchain (dmars.drpz.xyz)

9 pointsby holliplex4 コメント

要約

Dmarsは、1984年のプログラミングゲーム「Core War」のための、Rustで再実装されたアセンブラおよびシミュレータです。Core Warは、自己変更型プログラムがメモリ領域を巡って戦うゲームで、DmarsはオリジナルのpMARSの機能を再現しつつ、WebAssemblyへのコンパイルも可能です。これにより、ブラウザ上で直接Core Warの戦闘を実行・体験できるようになっています。Dmarsは、特に多数の戦闘を並列実行する際に、pMARSよりも大幅に高速なパフォーマンスを発揮します。

全文翻訳

dmars(6) — dan's memory array redcode simulator 名前 dmars — RedcodeアセンブラおよびCore Warシミュレータ 説明 Core Warは、1984年のプログラミングゲームで、Redcodeと呼ばれる疑似アセンブリ言語で書かれた自己変更型プログラムが、コアと呼ばれる円形のメモリ配列の制御を巡って戦います。最後に実行プロセスが残ったプログラム(または「ウォリアー」)が勝利します。dmarsは、標準的なCore WarツールチェーンであるpMARSのRustによる再実装です。アセンブラは完全なICWS'94プリプロセッサを扱い、pmars -Aとバイト互換性のあるロードファイル出力を生成します。シミュレータは、フラグで利用可能なICWS'88の制限付きで、アセンブルされたウォリアー間の戦闘を実行します。同じコアはWebAssemblyにもコンパイルされ、それが以下の戦闘を実行しています。ブラウザ上で自分のウォリアーを書き込み、戦わせることができる完全なブラウザプレイグラウンドもチェックできます。wasmによるCOREロード… 1990年代のクラシックウォリアーがブラウザでライブバトル。プレイグラウンドを開いて、あなた自身のウォリアーを書いてください。パフォーマンス 単一の戦闘を実行する場合、dmarsはpMARSのパフォーマンスにほぼ匹敵します。多数の戦闘を実行する場合は大幅に高速で、可能な限り並列で実行します。500ラウンド、Aeka vs Flash Paper — Apple M3 Pro。両方とも全く同じスコア:7 11 482。pmars -b -f -r 500 aeka.red flashpaper.red 0.77 s dmars run -f -r 500 aeka.red flashpaper.red 0.10 s (7.5倍) pMARS 0.9.4 コンパイル済み -O3;dmars シングルスレッド (-j 1) は同じ500ラウンドを0.78秒で実行します。インストール macOSおよびLinux用シェルインストーラ:curl --proto '=https' --tlsv1.2 -LsSf https://github.com/drivasperez/dmars/releases/download/v0.2.0/dmars-installer.sh | sh Cargo:cargo install --locked --git https://github.com/drivasperez/dmars 最新のGitHubリリースで事前ビルドされたバイナリが利用可能です。使用方法 dmars assemble warrior.red RedcodeをICWS'94ロードファイルとして標準出力にアセンブルします dmars assemble -o warrior.rc warrior.red ロードファイルをパスに書き込みます dmars assemble -8 warrior.red ICWS'88制限を強制します(pMARS -8) dmars run a.red b.red ウォリアーをシミュレータで互いに実行します dmars run -r 100 a.red b.red 100ラウンドをランダムな開始位置で戦い、スコアを報告します dmars watch a.red b.red インタラクティブなターミナルUIで戦闘を視覚化します — 再生、一時停止、タイムラインのスクラブ、セルの検査 dmars --help 完全なオプション dmars 0.2.0 — source — releases — playground — GPL-2.0-or-later