長らくEXEコンパイラをやっていて本業の8086を忘れかけていたので、思い立って出てみることにした。
主目的
逆アセンブラを作りながら機械語の基礎を勉強する(Haskellで)
http://qiita.com/7shi/items/026839b2bc193dbfb0cb
8086について
http://ja.wikipedia.org/wiki/Intel_8086
Intelの16ビットのCPUで第4次スパロボみたいな存在
この基礎にいろいろ継ぎ足していって現在のx86とかがある
いきなり64ビットをやるとかなり難しい
Haskellについて
Haskellをやるのが主目的ではないので、初歩的な機能のみを使って実装する
モナドとかアローとかは使わないよ
2進数
数字の数え方
0と1だけで構成されている
10進数は0123456789
10進数なので位がひとつ上がるごとに10倍
ゆえに、2進数は位がひとつ上がるごとに2倍
例
110(421) = 6
1100(8421)=12
1が立っている部分に相当する数を足す
再帰を追うコツ
- 再帰を最後まで追わないで、一段階で仕様を考える
- 一段階までうまくいけばあとは全部うまくいくはず
数学的帰納法
リンク
http://qiita.com/7shi/items/6887e7939c0168a0eb21
http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE
小並感
- Haskellは難しい
- 再帰は難しい
- プログラミングは難しい
- 8086を思い出すのが目的だと思っていたけど、新知識が登場して慌てた