第7回カーネル/VM探検隊で仮想マシン作った発表してきました

題名のとおりです、カーネル/VM探検隊でLTしてきました!
カーネル/VM探検隊に関しては↓
http://atnd.org/event/kernelvmseven
https://sites.google.com/site/kernelvm/

えーと、数日間でMIPS R3000アーキテクチャ仮想マシンErlang(!)で途中まで書きました。
recrioって名前を付けました。一応動いてはいますが、割り込みあたりがまだちゃんと実装できてなかったり、
ELFロードできてなかったり、なんかもういろいろダメですね...

スライドはこちら。
http://www.slideshare.net/siritori/ss-12638392

リポジトリはこちら。
https://github.com/siritori/recrio

recrio_debugモジュールでなんかいろいろテストして遊べます。

3> recrio_debug:test().
true
addi reg(2) := reg(0) + <<255,0>>
reg2 : 00000000000000001111111100000000              
       0 : 00100000000000101111111100000000              
       4 : 00100000000000011111011110001111              
       8 : 00100100001000011111000011111111              
       C : 00000000000000010000100001000010              
      10 : 00010000001000000000000000000100              
      14 : 10101100010000010000000000000000              
      18 : 00100000010000100000000000000100              
      1C : 00001000000000000000000000000011              
      20 : 00000000000000000011111111001101              

addi reg(1) := reg(0) + <<247,143>>
reg1 : 00000000000000001111011110001111              
reg2 : 00000000000000001111111100000000              
       0 : 00100000000000101111111100000000              
       4 : 00100000000000011111011110001111              
       8 : 00100100001000011111000011111111              
       C : 00000000000000010000100001000010              
      10 : 00010000001000000000000000000100              
      14 : 10101100010000010000000000000000              
      18 : 00100000010000100000000000000100              
      1C : 00001000000000000000000000000011              
      20 : 00000000000000000011111111001101
4> 

MIPSアーキテクチャのいいお勉強になりますね。実際、だんだんオペコードを覚えてきました...
バイナリパターンマッチのお陰でデコード部分がすんごい簡単に書けるのがステキだなって思いました。
ErlangなくせにOTPも使ってませんごめんなさい

詳しいことはスライドを見て下さいね!゜+.(・ω・)゜+.゜