表題に戻って。連想配列と可変長文字列の小さなユーティリティの独自開発は実は実用上の必要性が多少あって、しかし動機としては前段階というか試行錯誤のネタというか小目標が必要と思います。でないと頭の中だけで無駄に規模が大きくなって開発困難になり、しかも結局は必要で無かった要素を混入させることになると思えるからです。
迷う原因は仮定するプラットフォームが複数あるからです。
まず、普通にパソコンでC言語のライブラリとして用意する方式。こちらであまり本格的にやると今流行のインタプリタ言語と同様になってしまって、もちろん個人レベルでは太刀打ちできません。それでも値打ちがあると思っているから遂行するのですが、最終形態(複数ユーザーの分散データベース)は遥か先です。
極端に反対のFPGAの学習キットへの実装。CPUが入っていないタイプで、学習書は今はいろいろ取りそろっています。問題はCPUみたいなのを作成する必要があって、もちろんメーカーが提供するのもありますがかなり豪華なので躊躇します。能力的には最初期のCPU、intel 8080程度の能力でOKだからです。FPGAだとほぼすべての命令が1クロックで完了できそうですし、クロック数100MHzは簡単に達成できるでしょうから適度なパフォーマンスもあります。
おそらくどこかに公開されて自由に使える8080互換の回路集はあると思います。が、あまりに元のCPUをトレースしてもエミュレータを作る訳では無いので冗長です。
CPUを自作しよう、という市販本はあって、ただ手元にあるのは割り込みが実現されていないのでこちらは能力が足りません。せめてタイマ割り込みが無いと組み込み用途にはいろいろ不便です。
それならそれを参考に好きなように自作すれば良いでは無いか、ですが、ふむ、どうするか。原理的には命令読み込みフェーズと命令実行フェーズの他に割り込み受けフェーズを用意して3状態のステートマシンにすれば良いのですが、こちらはこちらでなかなか実例にはお目にかかりません。それとお手軽ライブラリ作成からかなり脇道に逸れている感じがします。
ARMなどのCPUが入ったFPGAは良いのですけど、こちらのARMはクロック数が1GHz程度もある高級品なので、外付けのSDRAMといわゆるキャッシュが必須となり、かなりの大事です。
手軽な組み込みマイコン学習基板(100MHzクロック程度のARMなど)は安価に売られていて、しかしこちらの問題はビデオインターフェースが無くて、例えば外付けのCPLD基板を用意して、かなりのハード的な配線が必要となります。外付けの小さなカラーOLEDディスプレイはあって、しかしこちらはスマホよりもかなり小さいです。
あれこれ考えて、結局は少し前に書いたように、普通のパソコンでtiny BASICみたいなのを作成するのを中間点としようと思いました。
長々と説明してきましたが、前座でした。続きを本ブログに書くかどうかは微妙(面白く書けるかどうか)です。
迷う原因は仮定するプラットフォームが複数あるからです。
まず、普通にパソコンでC言語のライブラリとして用意する方式。こちらであまり本格的にやると今流行のインタプリタ言語と同様になってしまって、もちろん個人レベルでは太刀打ちできません。それでも値打ちがあると思っているから遂行するのですが、最終形態(複数ユーザーの分散データベース)は遥か先です。
極端に反対のFPGAの学習キットへの実装。CPUが入っていないタイプで、学習書は今はいろいろ取りそろっています。問題はCPUみたいなのを作成する必要があって、もちろんメーカーが提供するのもありますがかなり豪華なので躊躇します。能力的には最初期のCPU、intel 8080程度の能力でOKだからです。FPGAだとほぼすべての命令が1クロックで完了できそうですし、クロック数100MHzは簡単に達成できるでしょうから適度なパフォーマンスもあります。
おそらくどこかに公開されて自由に使える8080互換の回路集はあると思います。が、あまりに元のCPUをトレースしてもエミュレータを作る訳では無いので冗長です。
CPUを自作しよう、という市販本はあって、ただ手元にあるのは割り込みが実現されていないのでこちらは能力が足りません。せめてタイマ割り込みが無いと組み込み用途にはいろいろ不便です。
それならそれを参考に好きなように自作すれば良いでは無いか、ですが、ふむ、どうするか。原理的には命令読み込みフェーズと命令実行フェーズの他に割り込み受けフェーズを用意して3状態のステートマシンにすれば良いのですが、こちらはこちらでなかなか実例にはお目にかかりません。それとお手軽ライブラリ作成からかなり脇道に逸れている感じがします。
ARMなどのCPUが入ったFPGAは良いのですけど、こちらのARMはクロック数が1GHz程度もある高級品なので、外付けのSDRAMといわゆるキャッシュが必須となり、かなりの大事です。
手軽な組み込みマイコン学習基板(100MHzクロック程度のARMなど)は安価に売られていて、しかしこちらの問題はビデオインターフェースが無くて、例えば外付けのCPLD基板を用意して、かなりのハード的な配線が必要となります。外付けの小さなカラーOLEDディスプレイはあって、しかしこちらはスマホよりもかなり小さいです。
あれこれ考えて、結局は少し前に書いたように、普通のパソコンでtiny BASICみたいなのを作成するのを中間点としようと思いました。
長々と説明してきましたが、前座でした。続きを本ブログに書くかどうかは微妙(面白く書けるかどうか)です。