1bit CPU というと、ジョークのように聞こえるかもしれません。しかし、この記事で紹介されている Motorola MC14500 は、実際に産業用途で使用されていた 1bit のマイクロコントローラーです。特に、PLC(Programmable Logic Controller)としての用途では、単純な制御ロジックを実装するために 1bit で十分な場合が多く、MC14500 はそのニーズに応えていました。
データシートを読むと、MC14500 は非常にシンプルなアーキテクチャで、命令セットも最小限です。というのも 1bit なので算術演算はなく bit 演算しかないです。現代の技術でこのような 1bit CPU を再設計したら、どのようなものになるのか興味深いです。
カバレッジのしくみ
Rust の新しいコードカバレッジ/Source-based code coverage
最近、業務でテストのカバレッジを扱う機会がありました。カバレッジツールは、どのようにしてソースコードと実行時の情報を結びつけているのか疑問に思い、調べてみました。JavaScript や Python のようなインタプリタ言語では、ソースコードと実行が 1 対 1 で対応しているため、カバレッジの取得は比較的容易です。しかし、C/C++のようなコンパイル言語では、ソースコードがバイナリに変換される過程で最適化が行われるため、元のコードと実行時の挙動が一致しない場合があります。この記事では、行単位より細かく言語文法に即したカバレッジである「ソースベースのカバレッジ」について、具体例を交えながら解説しています。