最近コンパイラ関係の本が多くてうれしい悲鳴を上げているピヨ♪という事で、今回はコンパイラとプログラミングの境目の本を紹介するピヨっ♪
Cとアセンブリ言語で学ぶ計算機プログラミングの基礎概念 - プログラムはプロセッサ上でどのように実行されるのか
この本は、コンパイラと関係しているとも言えるけど、より広い人をターゲットにした高度な教養書ピヨ。
【目次】
第1章 計算機システムとプログラミング言語
1.1 計算機システムとは
1.2 プログラミング言語とは
第1章の課題
第2章 数の表記
2.1 数の表記とは
2.2 二進数
2.3 十六進数
2.4 十進数
第2章の課題
第3章 整数の表現
3.1 整数の表現とは
3.2 符号なし整数
3.3 符号つき整数
3.4 符号拡張
3.5 オーバーフロー
第3章の課題
第4章 実数の表現
4.1 実数の表現とは
4.2 浮動小数点表現
4.3 固定小数点表現
第4章の課題
第5章 MIPS32アーキテクチャ
5.1 MIPS32アーキテクチャとは
5.2 メモリ
5.3 機械語命令とその実行
第5章の課題
第6章 MIPS32エミュレータSPIM
6.1 MIPS32エミュレータSPIM とは
6.2 アセンブラとは
6.3 文字端末版SPIM による実行
第6章の課題
第7章 大域変数
7.1 大域変数とは
7.2 C言語での表記
7.3 MIPS32の命令
7.4 アセンブリ言語への翻訳
7.5 プログラム例
7.6[補遺]C言語における整数型
第7章の課題
第8章 算術演算
8.1 算術演算とは
8.2 C言語での表記
8.3 MIPS32の命令
8.4 アセンブリ言語への翻訳
8.5 プログラム例
第8章の課題
第9章 関係演算・分岐
9.1 関係演算・分岐とは
9.2 C言語での表記
9.3 MIPS32の命令
9.4 アセンブリ言語への翻訳
9.5 プログラム例
9.6[補遺]絶対ジャンプと相対ジャンプ
第9章の課題
第10章 制御構造
10.1 制御構造とは
10.2 C言語での表記
10.3 MIPS32の命令
10.4 アセンブリ言語への翻訳
10.5 プログラム例
10.6[補遺]コンパイラ最適化
第10章の課題
第11章 論理演算
11.1 論理演算とは
11.2 C言語での表記
11.3 MIPS32の命令
11.4 アセンブリ言語への翻訳
11.5 プログラム例
第11章の課題
第12章 配列
12.1 配列とは
12.2 C言語での表記
12.3 MIPS32の命令
12.4 アセンブリ言語への翻訳
12.5 プログラム例
12.6[補遺]添字の範囲
第12章の課題
第13章 ポインタ
13.1 ポインタとは
13.2 C言語での表記
13.3 MIPS32の命令
13.4 アセンブリ言語への翻訳
13.5 プログラム例
第13章の課題
第14章 システムコール
14.1 システムコールとは
14.2 C言語での表記
14.3 MIPS32の命令
14.4 アセンブリ言語への翻訳
14.5 プログラム例
14.6[補遺]バッファオーバーフロー
14.7[補遺]プログラムの起動から終了まで
第14章の課題
第15章 実数算術演算
15.1 実数算術演算とは
15.2 C言語での表記
15.3 MIPS32の命令
15.4 アセンブリ言語への翻訳
15.5 プログラム例
第15章の課題
第16章 関数
16.1 関数とは
16.2 C言語での表記
16.3 MIPS32の命令
16.4 アセンブリ言語への翻訳
16.5 プログラム例
第16章の課題
第17章 引数・関数値
17.1 引数・関数値とは
17.2 C言語での表記
17.3 MIPS32の命令
17.4 アセンブリ言語への翻訳
17.5 プログラム例
第17章の課題
第18章 局所変数
18.1 局所変数とは
18.2 C言語での表記
18.3 MIPS32の命令
18.4 アセンブリ言語への翻訳
18.5 プログラム例
18.6[補遺]バッファオーバーフローとセキュリティ
第18章の課題
第19章 再帰
19.1 再帰とは
19.2 C言語での表記
19.3 MIPS32の命令
19.4 アセンブリ言語への翻訳
19.5 プログラム例
19.6[補遺]末尾再帰
第19章の課題
第20章 文字・文字列
20.1 文字・文字列とは
20.2 C言語での表記
20.3 MIPS32の命令
20.4 アセンブリ言語への翻訳
20.5 プログラム例
第20章の課題
第21章 ビット演算
21.1 ビット演算とは
21.2 C言語での表記
21.3 MIPS32の命令
21.4 アセンブリ言語への翻訳
21.5 プログラム例
第21章の課題
第22章 構造体
22.1 構造体とは
22.2 C言語での表記
22.3 MIPS32の命令
22.4 アセンブリ言語への翻訳
22.5 プログラム例
22.6[補遺]ビットフィールドと共用体
第22章の課題
第23章 関数ポインタ
23.1 関数ポインタとは
23.2 C言語での表記
23.3 MIPS32の命令
23.4 アセンブリ言語への翻訳
23.5 プログラム例
第23章の課題
第24章 可変引数
24.1 可変引数とは
24.2 C言語での表記
24.3 MIPS32の命令
24.4 アセンブリ言語への翻訳
24.5 プログラム例
第24章の課題
第25章 動的メモリ割当て
25.1 動的メモリ割当てとは
25.2 C言語での表記
25.3 MIPS32の命令
25.4 アセンブリ言語への翻訳
25.5 プログラム例
25.6[補遺]メモリリーク
第25章の課題
第26章 非局所的ジャンプ
26.1 非局所的ジャンプとは
26.2 C言語での表記
26.3 MIPS32の命令
26.4 アセンブリ言語への翻訳
26.5 プログラム例
第26章の課題
第27章 マルチスレッド
27.1 マルチスレッドとは
27.2 C言語での表記
27.3 MIPS32の命令
27.4 アセンブリ言語への翻訳
27.5 プログラム例
第27章の課題
第28章 スレッド同期
28.1 スレッド同期とは
28.2 C言語での表記
28.3 MIPS32の命令
28.4 アセンブリ言語への翻訳
28.5 プログラム例
28.6[補遺]デッドロック
第28章の課題
第29章 例外
29.1 例外とは
29.2 C言語での表記
29.3 MIPS32の命令
29.4 アセンブリ言語への翻訳
29.5 プログラム例
第29章の課題
第30章 割込み
30.1 割込みとは
30.2 C言語での表記
30.3 MIPS32の命令
30.4 アセンブリ言語への翻訳
30.5 プログラム例
第30章の課題
第31章 非ブロッキング並行データ構造
31.1 非ブロッキング並行データ構造とは
31.2 C言語での表記
31.3 MIPS32の命令
31.4 アセンブリ言語への翻訳
31.5 プログラム例
31.6[補遺]コンセンサス数
第31章の課題
参考文献
索引
目次を見たら「あれ?普通のことだろ」と思う人もいると思う。だけど、これらの内容が
CとMIPSアセンブラで解説していると知ったら吃驚すると思う。そう、この本は
プログラミングの要素がどのようにアセンブラに翻訳されるのかを解説した本なんだ。これこそボクが求めていた本ピヨ♪
昨今はプログラミングの抽象化が進み、本質を知らない人が多くなったと熟練技術者達が危惧する時代に突入しているピヨォ。ボクはそれに同感で、プロと呼ばれるからには、こういった
プログラムがどのように実現されているのかを知る必要があると思う。何故ならば、それを知らない事には抽象化の壁が破れて、生々しい現実が攻めて来た時に抵抗が出来ないからなんだ。その状態でプロを名乗る資格があるのだろうかとボクは疑問に思う。
そういった考えからこの手の本を長年探して来たけど、コンパイラ本ぐらいしかなかったピヨ。だけど、この本は純粋なコンパイラ本ではなくて、Cを知っているプログラマが教養を高められる非常に重要な本ピヨっ♪
だからボクはこの本を
プログラマ全員にお勧めするピヨ♪それからもちろんコンパイラ好きにもお勧めするピヨ。始めの方は簡単でコンパイラ好きならば常識的な事を書いているけど、この本の全ての内容は知らないと思うから必見ピヨ♪
この系統の良書は意外と珍しいから、みんなで買って沢山出版されるように働きかけよう!
最後に、レビューを公平なものにするために苦言を呈するけど、一つだけこの書籍にも弱点があるピヨ。それはオブジェクト指向の要素がない点ピヨォ。オブジェクト指向は当たり前の概念だから多少高価になってでも解説してほしかったなぁ・・・
そこは続編に期待するピヨ♪
テーマ : プログラミング
ジャンル : コンピュータ