借り初めのひみつきち

仮ブログです。

WebAssembly

QOI 画像ビューワーつくった

最近 QOI (Quite OK Image Format) という新しい画像形式が登場しました。 QOI — The Quite OK Image Format PDF1 ページに収まる単純な仕様でエンコーダーやデコーダーもC言語で数百行と単純で高速ですが、PNGよりやや圧縮率が悪い程度というトレードオフが…

今週の MYOS

wasm-strip MYOS のアプリケーションは WebAssembly 形式に対応していて、現在は Rust で開発する前提でライブラリの整備を進めています。 しかしどうやら Rust で WebAssembly を生成すると Release ビルドにも関わらずバイナリにデバッグ情報のようなもの…

今週の MYOS

さいきんの MYOS 界隈のトピックです。 WASM 高速化 以前の大規模改修で数倍の高速化に成功した WASM ランタイムですが、まだいくつか課題と高速化の余地があります。 まず、実行時エラーの処理を改善しました。 以前のエラー処理は命令実行時に現在の命令を…

今週の MYOS

さいきんの MYOS/TOE 界隈のトピックです。 WebAssembly 高速化 (fused op) 中間コード変換とスタック操作合理化によって以前に比べると結構速くなりました。 この2つの改良によって実現可能になった新しい高速化手法があります。 WebAssembly は所謂スタッ…

MYOS のウィンドウのつくりかた

MYOS/TOE のアプリでウィンドウを作るところを少し詳しく見てみましょう。 ※ 執筆時点のバージョンの TOE をもとに記述しています。まだ API 安定化してないのでバージョンごとに細かい違いがあったり MYOS と TOE の間でも微妙に違うことがあります。 アプ…

wasm ランタイムの高速化

現在の自作 wasm ランタイムはインタプリタ実行しています。 インタプリタと JIT VM やエミュレーターの実装方法は大きく分けると2種類あります。 ある程度一気にターゲットの機械語に変換してしまう JIT 方式と、1命令ずつ読み込んで動作を再現するインタ…

Wasm on Wasm

ついに、 WebAssembly の自作エミュレータの上で動く自作 OS の上で自作 WebAssembly ランタイムが動くようになりました つまり Wasm on Wasm ですね٩( 'ω' )و 以下に試験的に体験版設置してるので起動してみることができます。 meg-os.org もちろん PC98 …

BASIC-DOS

さいきん変な OS が発表されたっぽいです。 basicdos.com 2020 年になって DOS !!! ぼくはこういうソフトを見つけた時に、普通の人とはちょっと視点で見てしまいます。 このソフト、ぼくの自作エミュレータで動くのかな? バイナリないナリ ということで、ま…

Rust 自作 OS 日記/Part 8 🔔

飲食店のテーブルには謎のボタンがついていることがあります。 お店の中のものを勝手に触ると怒られますが、謎のボタンを押すと店員さんがやってきていろいろなサービスを受けることができます。 これって何かに似てませんか? 前回は WebAssembly のランタ…

Rust 自作 OS 日記/Part 7 次世代の OS へ。

myos の開発をはじめておよそ半年が経ちました。 前回の続き 前回の日記より実装も進歩してはりぼて OS でできることの8〜9割程度が myos でもできるようになりましたが、まだいくつか課題があります。 そもそも myos ははりぼて OS ベースではないし、は…

WASM 自作 PC エミュレータ日記/202001

自作PCエミュレーターの進捗です。GitHub - neri/vpc: A PC Emulator implemented by WebAssembly はりぼてOS 前回投稿時点では 起動画面が出るところまでの動作でそれ以降の動作は不安定になってましたが、その後の改良で現在ではほとんどのアプリが動くよ…

任意コード実行可能なホームページ作った。

今年作った自作アプリの紹介します。 TL; DR Virtual Playground GitHub - neri/vpc: A PC Emulator implemented by WebAssembly このアプリは Web ブラウザ上で PC をエミュレーションします。 技術的には WebAssembly、 Canvas、 WebWorker、 WebAudio、 W…

WASM自作PCエミュレータ制作日記/5

ついに某OSの起動画面が出ました。まだ動作が怪しいですが...この辺ならキーボードも普通に動きます。(マウスは死んでます某OSも途中で止まります。 cpuid実装してるはずなのに認識されてないのが気になります。FreeDOS (32bit) はまだよくわからない動作を…

WASMで自作PCエミュレーター Part4

自作エミュレーターが VGA に(一部)対応しました!github.com今までは UART 経由で端末エミュレーターに接続していました。 DOS やその上で動く多くのソフトウェアは標準入出力という概念があるので、今まではこの方法が簡単に実装できてうまく動いていま…

WASMでPCエミュレータ作った話 / Part 3

github.comさいきんはずっとエミュレーター作ってるます。 FreeDOS ついに、FreeDOS (16bit版) が起動しましたヽ(•̀ω•́ )ゝ✧MSDOSはまだどこかおかしいようです。 Web MIDI Web MIDI に対応しました。 MPU-401 UART モード互換インターフェースのつもりなの…

続・WASMでPCエミュレータ作った。

neriring.hatenablog.jp前回の記事の時点では、対応する命令も少ないしペリフェラルは UART のみでとても OS が起動する状態ではありませんでした。 その後色々実装して前回動かなかったブラウザにも対応し、ついに自作 OS の osz が起動しました!基本的な…

WASMでPCエミュレータ作った。

WASM で PC エミュレータ作りました☆(ゝω・)vキャピgithub.com※ 現時点では自作のOSすら起動しません。すでにいろんなエミュレータが存在しているので今更感あるかもしれないですが、このエミュレーターは WebAssembly を使っているのが大きな特徴です。もと…