プログラムがコンピュータで動く仕組み

書籍情報

発売日 : 2021/11/05

著者/編集 : 中野 浩嗣/伊藤 靖朗

出版社 : コロナ社

発行形態 : 単行本

ページ数 : 200p

書籍説明

内容紹介

本書の目的は,プログラムがどのような仕組みでコンピュータで動作するのかという疑問に簡潔に答えることである。そのためにVerilogを用いて小さなCPUを設計し,それをターゲットとするアセンブラとコンパイラを作成する。
『1章 Verilogによる組み合わせ回路の設計』では,ハードウェア記述言語Verilogの基本構文と,組み合わせ回路の設計方法を具体的な回路の記述例を参照しながら理解することがテーマになっている。
『2章 Verilogによる順序回路の設計』では,順序回路でデータを記憶するための基本回路であるフリップフロップをVerilogで記述する方法がテーマになっている。
『3章 TinyCPUの設計の準備』では,TinyCPUの設計の準備として,TinyCPUの動作の一部だけを行う回路を設計することをテーマとしている。
『4章 TinyCPUの設計』では,TinyCPUの構造と機械語命令セットを理解し,これまでに設計したモジュールをインスタンス化し,組み合わせてTinyCPUを設計することをテーマとしている。
『5章 アセンブリ言語プログラミング』では,TinyASM(TinyCPUのアセンブリ言語)の仕様とTinyASMプログラミングを学ぶことをテーマとしている。
『6章 アセンブラの設計』では,TinyASMプログラムを機械語プログラムに自動的に変換するアセンブラをPerlを用いて設計することをテーマとしている。
『7章 コンパイラの設計』ではTinyCプログラムをTinyASMプログラムに変換するコンパイラをコンパイラ作成ツールのFlex(字句解析ツール)とBison(構文解析ツール)を用いて設計することをテーマとしている。

目次

1. Verilogによる組み合わせ回路の設計
1.1 Verilogの基本構文とシミュレーション
 1.1.1 Verilogによる半加算器の回路記述
 1.1.2 半加算器のテストベンチ
 1.1.3 IcarusVerilogによるシミュレーション
 1.1.4 モジュールのインスタンス化
 1.1.5 Verilogの定数表現
 1.1.6 Verilogの演算子
 1.1.7 always文
 1.1.8 ビット数可変の組み合わせ回路
1.2 セレクタ回路とその応用
 1.2.1 セレクタ回路
 1.2.2 7セグメントデコーダ回路
 1.2.3 算術論理演算回路
演習問題
2. Verilogによる順序回路の設計
2.1 フリップフロップとカウンタ回路の設計
 2.1.1 フリップフロップの設計
 2.1.2 カウンタ回路の設計
2.2 ステートマシン回路の設計
2.3 スタック回路の設計
2.4 メモリ回路の設計
演習問題
3. TinyCPUの設計の準備
3.1 演算スタック回路
 3.1.1 中置記法と後置記法
 3.1.2 演算スタック回路の設計
3.2 命令フェッチ回路
3.3 式計算回路
3.4 拡張命令フェッチ回路
 3.4.1 バス
 3.4.2 バスを用いた拡張命令フェッチ回路
演習問題
4. TinyCPUの設計
4.1 TinyCPUの構成部品と機械語コード
4.2 TinyCPUの構造と動作
4.3 TinyCPUのVerilogソースコード
4.4 TinyCPUの簡単なプログラム例
4.5 TinyCPUのテストベンチとシミュレーション
演習問題
5. アセンブリ言語プログラミング
5.1 アセンブリ言語とC言語
 5.1.1 アセンブリ言語TinyASM
 5.1.2 C言語風プログラミング言語TinyC
5.2 基本構文のTinyASMプログラム
 5.2.1 代入文
 5.2.2 if文
 5.2.3 while文
 5.2.4 do文
5.3 TinyASMプログラムの例
 5.3.1 コラッツの問題
 5.3.2 ユークリッドの互除法
演習問題
6. アセンブラの設計
6.1 TinyASMアセンブラ
6.2 Perl超入門
 6.2.1 Perlプログラムの基本構造とスカラ変数
 6.2.2 ファイルの読み出し,リスト,連想配列
 6.2.3 文字列の置換
6.3 アセンブラの設計
演習問題
7. コンパイラの設計
7.1 TinyCコンパイラの概略
7.2 Flexを用いた後置記法の式の計算
7.3 FlexとBisonを用いた中置記法の式の計算
 7.3.1 Flexによる字句解析
 7.3.2 Bisonによる構文解析
 7.3.3 中置記法の式計算プログラムの生成と実行
7.4 代入文専用のコンパイラ
 7.4.1 Flexによる字句解析
 7.4.2 Bisonによる構文解析
7.5 TinyCコンパイラ
 7.5.1 Flexによる字句解析記述
 7.5.2 Bisonによる構文解析記述
 7.5.3 変数の宣言のための文法規則
 7.5.4 if文のための文法規則
 7.5.5 ifelse文のための文法規則
 7.5.6 while文のための文法規則
 7.5.7 do文のための文法規則
 7.5.8 halt文とout文のための文法規則
 7.5.9 TinyCプログラムのコンパイル例
演習問題
引用・参考文献
索引

著者情報

中野 浩嗣
伊藤 靖朗