Architect Note


しがないPHPerのブログ

ひとりNand2Tetris(3) ーメモリを手に入れた

Nand2Tetrisもくもく昨日の続き。 ついに値を記憶するRAMが出来上がります。ALUとメモリがあれば、これで次の何かが作れそうですね。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 3章 順序回路 フリップフロップというチップがいきなり出てきて、これは使って良いものとして話が進みます。Nandがあればできるらしいですが、詳細は割愛されていました。 nand2tetris-memo/03 at master ・ hirak/na..


ひとりNand2Tetris(2) - ALUまで

Nand2Tetrisもくもく昨日の続き。予想はしていたけど、シルバーウィーク中の読了は無理っぽいね。。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 2章 ブール算術 加算回路を作成して、もっと汎用的に様々な計算が可能なALU(Arithmetic Logic Unit)を作成します。 もうそろそろ絵を書くのは無理な感じ。 nand2tetris-memo/02 at master ・ hirak/nand2tetris-mem..


ひとりNand2Tetris(1) -NANDから他のゲートを作る

シルバーウィークは特にやることもないので、ひたすら「コンピュータシステムの理論と実装」を写経することにしました。NANDゲートだけ与えられた状態から、CPUを作りコンピュータを作りOSを作り、最終的にTetrisのようなゲームを動かすところを目指すというコンセプトの教科書です。通称"Nand2Tetris"。まだ一章を読み終わったところ。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 付属のJava製シミュレーターをインストールして、あくま..


やり直しC言語:インターポジショニングによるtime(3)のスタブ化

C言語の本を久しぶりに読み返しているのですが、インターポジショニング(interpose, interposition)なる言葉を初めて知ったのでメモです。 「C標準ライブラリ関数などをローカル定義の関数で上書きできてしまう」というお話です。うっかりやらかすとバグの温床になるのですが、うまく使えばユニットテストのスタブとして便利そう。 time関数についておさらい 例として思いついたので、time(3)を上書きしてみます。 time(3)は現在時刻をUNIX time..


バグのないプログラムと不完全なこの世界

最近、オライリーの「アンダースタンディングコンピュテーション」を読みました。コンピューターサイエンスの素養がない人にも分かりやすく計算について教えるという内容で、細々と写経しながら読み進めていました。 hirak/memo-understanding-computation ・ GitHub この本、8章と9章がとにかく面白くて、特にライスの定理は初めて知ったので、自分なりに理解をまとめておこうと思います。 ※形式的な証明は私もちゃんと理解していないので、直..