わたなべです。 > ちなみにこの ML では話題に上らなかったんですけど、「CPUの創り方」っていう 本がしばらく前に出てました > よね。 > 購入するのに勇気がいる表紙の。。。 > 私のレベルなんかだとかなり勉強になったし、満足な買い物だったんだけど皆さん はいかがだったんでしょう。 話には聞いています。確かに私の歳ですと、表紙と挿絵をみると勇気がいる(笑) http://book.mycom.co.jp/book/4-8399-0986-5/4-8399-0986-5.shtml 私の少し前の先輩達ですと、TTLでコンピュータを自作していましたね。 (検索かけてみましたら今でもいるみたいです。) それこそフリップフロップ、シフトレジスタ、カウンタを組み合わせて コンピュータの機能を実現していたわけで。といっても4bitの加算器 だったかな?入力はビット毎のスイッチ、出力はLEDで当然実用では なくホビーででしたけど。 今の時代でしたらPLDでもっと高機能な物ができてしまいますね。 FPGAで作る68000とか何かの雑誌に出ていたような気もします。 また大学の研究室では6502互換のIPコアがGPLでリリース されていますね。 http://shimizu-lab.dt.u-tokai.ac.jp/indexj.html はんだごてを持つのは面倒だ?という人にはこちらがお勧めです。 「C++による仮想コンピュータの実現」 http://www.cqpub.co.jp/interface/Writers/watanabe/cpu.html 以前(PCが 486DX 75MHz MS-DOSの頃)C言語を勉強するために 当時使用していた16bitマイコンのシミュレータを作ったことがあります。 マイコンのプログラムであるテキスト形式のHEXのコードを読み込み 擬似ROMエリアとして用意した配列に並べていきます。リセットベクタ 相当の位置のデータを擬似ROMエリア相当から読み出しスタートです。 PC(プログラムカウンタ)、アキュムレータ、その他マイコンのレジスタ 相当は変数で用意し、後はマイコンの気持ちになって(笑)、というより コード表とにらめっこしながらデコード機能をプログラムで組みました。 割り込みもそれなり処理してわりと実用的なスピードで動きました。 アドレッシングの豊富なCISCマイコンでしたので、デコード処理も けっこうな振り分けになったのですが、コードのどこのビットが何だと 調べたり、キャリーフラグやゼロフラグの立つ条件など、マイコンの アキテクチャーの理解には役立ちましたね。 調子に乗ってH8のも作り始めたのですが、その後本来の仕事が 忙しくなり、途中で止めてしまいました。 > > 昔の人が強いのは、やはり原点を知っているからだと > > 思います。C言語でプログラムを書いても機械語の > > 1ステップ1ステップがイメージできる。CPUの概要を > > 見てゲートレベルでその構成が見えるのではないで > > しょうか? > > 私も良く思うんですよね。 > 勉強してるとだんだん最新の物でなく昔のものへと遡って行く習性があるよう で。。。 そのうち簡単な音声録音再生でもやろうかと思ってい るのですが、最近はみな専用IC化されてしまっていて。 で、このへんを調べようとすると10年ぐらい前の雑誌を 漁っていたりして。ちょいと話が違うかな。 趣味で回路とかプログラムを作っているうちは良いのですが、 これが製品/商品を作るとなると、例えば「リセット時間は MIN.20サイクルと書いてあるけど、ノイズでこれより短い時間の リセットがかかったらどうなるの?」とか製品/商品の場合は あらゆることを想定して設計段階で手を打っておく必要が あります。デバイス設計者の話の真贋を判断するには、 デバイス設計者並の知識が必要? そこまで行かなくてもブロック図レベルで理解できれば 「このタイマのさ〜この出力にあっちからの信号とこういう 条件の時にさラッチするようなさ〜フラグ付けてもらえると ソフトがすご〜く楽になるんだけど、何とかならない?」と 提案できたりもします。ま、だから多機能タイマとか汎用性を 高めて、ただ動かすだけでもけっこう面倒だったりして。 H8のMLなんで、H8の簡易シミュレータは自作できるし、 (gdb、 GDBかな?はよく知りません) H8のボードで音声録音/再生もできるはずということで。