Rust

Rust

RustとWASMで作るx86エミュレータ、18日間・226PRの完走記 — ブラウザでLinuxとDOOMが動くまで(ポストモーテム)

Rust製x86エミュレータrustx86を18日間・226本のPRで完結させた。ブラウザで32bit Linuxが起動し、Xが上がり、DOS版DOOMが音付きで遊べるまでの到達点と、13→133 MIPSの最適化戦記、作って捨てたCranelift JIT、検証の多層防御、そして「なぜここで終えるのか」を記録するポストモーテム。
Rust

Rust製x86エミュレータのXにicewmとDilloを載せたらChromeが6分で落ちた — V8のダンプからwasm JITの関数テーブル漏れまで【rustx86 グラフィックス編 #4】

連載案内: Rust + WebAssembly で書いている x86 エミュレータ rustx86 の開発記。グラフィックス編は #1 VGA mode 13h・#2 Linux のフレームバッファ (efifb)・#3 PS/2 マウス...
Rust

Rust製x86エミュレータの上でXorgを立てる — PS/2マウスとfbdevで、ブラウザにxtermが開くまで【rustx86 グラフィックス編 #3】

連載案内: Rust + WebAssembly で書いている x86 エミュレータ rustx86 の開発記。グラフィックス編は #1 VGA mode 13h・#2 Linux のフレームバッファ (efifb) と来て、今回は X。他...
Rust

Rust製x86エミュレータでLinuxのフレームバッファを映す — vesafbは居なかった、efifbで描く【rustx86 グラフィックス編 #2】

連載案内: Rust + WebAssembly で書いている x86 エミュレータ rustx86 の開発記。これまでの連載は ネットワーク編 #1・ディスク編 #1・JIT編 #1。グラフィックス編の 前回 (#1) は VGA mod...
Rust

Rust製x86エミュレータにVGA mode 13hを実装して、ブラウザでDOSのボールを跳ねさせる【rustx86 グラフィックス編 #1】

連載案内: Rust + WebAssembly で書いている x86 エミュレータ rustx86 の開発記。これまでの連載は ネットワーク編 #1・ディスク編 #1・JIT編 #1。今回からグラフィックス編が始まる。画面が文字だけだった...
Rust

QEMUの主砲「TB chaining」が不発だった話 — Rust製x86エミュレータJITの真の敵はtick粒度だった【rustx86 JIT編 #2】

Rustでx86エミュレータ rustx86 を書いている。前回(JIT編#1)は、手書きAArch64のテンプレートJITがインタプリタに初めて勝つまでを書いた。ブートは-14%の黒字、しかしgccコンパイル窓には-2%の赤字が残った。今...
Rust

Rust製x86エミュレータに手書きAArch64テンプレートJITを載せて、インタプリタに勝つまで【rustx86 JIT編 #1】

Rustでx86エミュレータ rustx86 を書いている。ブラウザ(WebAssembly)でもネイティブでも同じcoreが動き、実物のLinuxが起動してgccでCコンパイルまでできる。ネットワーク編・ディスク編に続いて、今回からJIT...
Rust

Rust製x86エミュレータをもう19%速くする — #[cold]で勝ち、OoOの影に4連敗した日

自作のx86エミュレータ rustx86 は、インタプリタのまま100 MIPSに到達したところで最適化を一区切りにしていた。本稿はその第2ラウンドの記録である。結論を先に書くと、勝ったのは1件 (-19%)、負けとワッシュが4件。そして勝...
Rust

Rust製x86エミュレータのディスクを5.6倍速くする — 圧縮はゲストではなく輸送路の仕事【rustx86 ディスク編 #2】

本記事は連載「rustx86 ディスク編」の第2回である。ブラウザで動くRust + WebAssembly製のx86エミュレータ rustx86 にディスクを生やしていく。前回: virtio-blkを実装して、ブラウザのLinuxでgc...
Rust

Rustのx86エミュレータにvirtio-blkを実装して、ブラウザのLinuxでgccを128MBで動かす【rustx86 ディスク編 #1】

本記事は連載「rustx86 ディスク編」の第1回である。ブラウザで動くRust + WebAssembly製のx86エミュレータ rustx86 に、ディスクを生やしていく。ネットワークを繋いだ経緯は連載「rustx86 ネットワーク編」...