第157回 素人くさいSICP読書会(at 三田某所)

  • 会場提供ありがとうございました
  • 参加者が少なくてへこんだ。最初3人で、最終的に6人
  • はじめの40分くらい無駄話をしてしまう
  • 新しいMacBook Proはバッテリー交換不可とか
  • ノキアのサービスは全部「Oviなんとか」とか
  • shibuya.lisp #3でshiroさんの講演があるとか
  • P爺とか
  • 5章を頭から読んだ
  • スタックマシンとレジスタマシンについて雑談
  • スタックマシンのCPUもそこそこあるらしい
  • スタックポインタはレジスタマシンでスタック領域を確保するためのものなのでスタックマシンにはない
  • ノイマン型の話に脱線
  • ハーバード・アーキテクチャの方がセキュリティが高いけど実装が大変。プログラムをデータとして扱うことができないため、ハードウエアでプログラムのロードを行う必要がある
  • 問題5.1
  • この問題では一時レジスタは不要
  • 初期化のボタンが二つと「Pへの代入ボタン」と「Cへの代入ボタン」の計4個のボタンを使う
  • 「Pへの代入ボタン」→「Cへの代入ボタン」の順に押さないと動作がおかしくなる。順番依存
  • 佐野さんがホワイトボードに書いた図↓


  • 問題5.2
  • そのまま書き下すだけ
(controller
 (assign c (const 1))
 (assign p (const 1))
 test-c
   (test (op >) (reg c) (reg n))
   (branch (label fact-done))
   (assign p ((op *) (reg p) (reg c)))
   (assign c ((op +) (reg c) (const 1)))
   (goto (label test-c))
 fact-done)