簡潔なARMエミュレータ実装として面白そうな「uARM」
AVR上で動くARMエミュレータを実装してLinuxを起動するという頭のオカシイ記事を読んで感動したのだが、よくよく読むとそのARMエミュレータそのものも中々面白そうである。
(和訳はこちら:本の虫: GNU/Linuxを動かせる最低スペックはATmega)
- エミュレート対象のCPUはARMv5TE、なぜかThumbまでサポート
- UARTなどの周辺デバイスは独自実装ではなく、Intel XScale PXA255 SoCをエミュレート
- 但しSDのエミュレーションが遅すぎたのでpvdiskという準仮想化ドライバを実装
- AVR上だけではなくPC上でも動作(恐らくLinux上という事だと思われる。OSXだとビルドエラーになる)
- コードサイズは非常にコンパクトで9056行
- Makefileを見る限り標準ライブラリ以外何もリンクしてない
- Linuxカーネルには手を加えずに動いていると推測される(pvdiskはモジュールにしてinitramfsへ組み込む必要があるはず)
完成度は、カーネルに手を加えずにLinuxのユーザランドが動いているように見えるので相当のものではないだろうか。
コードサイズが小さいので読むの楽そうだし、依存関係が小さいからどこか別のスタンドアロン環境へ持っていくのも簡単そう(僕はUEFIで動くかな〜とか妄想している)。
取り敢えず元サイトから落としてgithubへ公開しておいたので、弄りたい人はforkしてみてはどうだろう。