ここでは、連載、単行本を除く単発のC言語関係記事をリストします。これで全部ではないと思いますが、未掲載記事に気付いた方はご一報下さい。以下はこのページで扱っている記事の一覧です。
エラーの原因を探れ! ウラから見たコンパイラ~リンカー~ローダーの仕組み [日経ソフトウェア2005年4月号掲載]†
コンパイラ~リンカー~ローダーの仕組みを説明し、クラッシュした絶対アドレスからそれがどの関数かを突き止める手順を説明します。この記事ではC++も扱っています。
目次は以下の通りです。
- Win32プログラムでも16進数からコードを特定できる
- アドレスとコードの関係をつきとめるのが最終目標
- アドレス確定までに必要な三つのソフトウエア
- MAPファイルでわかるアドレスと関数の関係
- C++固有の事情でソースにない名前の関数ができる
- ソースコード上にない名前
- 詳細な位置を突き止めるためリスティング・ファイルを使う
- 相対アドレスを計算してコードを特定する
- コラム なぜリンカーが必要なのか
超小型BASICインタプリタを作ってみよう 簡単!楽しい!トイ言語処理系の製作 [日経ソフトウェア2005年10月号掲載]†
C言語(一部C++)で書かれたインタプリタ「ワンべぇBaby」のソースコード解説記事です。ワンべぇの最初のバージョンはC言語しか使用できないWonderWitch用として開発された関係で、コア部分は全てC言語で書かれています。
目次は以下の通りです。
- 768バイトから作れる「小さい」処理系
- 携帯ゲーム機がルーツの超小型BASIC風インタプリタ
- 動作モードに対応した二つのメイン・ルーチンがある
- インタラクティブ・モードの動作を追う
- 中間言語のフォーマットをチェックしよう
- いよいよ中間言語コードの実行へ
- 中間言語コードから構文解析へ
- 処理系の心臓部,ステートメントの実行
- printステートメントでテキストを出力へ
- 実は歯ごたえのある「式の計算」
- 自作ステートメントを追加してみよう
Visual C++ 2005を使ってプログラミング言語の仕組みを学ぼう [日経ソフトウェア2007年11月号掲載]†
C言語のソースコードからアセンブリ言語のソースコードを出力させ、具体的にどのようなコードが生成されているかを調べる記事です。
目次は以下の通りです。
- アセンブリ言語のコードを生成する準備
- 生成したアセンブリ・コードの読み方
- ●簡単な足し算のコード
- ●グローバル変数とローカル変数の違い
- ●if文による条件判断
- ●テーブルに展開されるswitch文
- 数値計算とアドレス計算を区別して考えよう
- ●do文による繰り返し構造
- ●関数定義
- ●関数の呼び出し
- ●オブジェクト
- 最適化で消えてなくなるコード
- コラム マシン語の計算の基本は“+=”形式
- コラム SHORTとは何だろう?
- コラム なぜ最適化は常には行われない?
思うままにコンピュータを操れるWin32 APIで作るブロック崩し [日経ソフトウェア2008年4月号掲載]†
コンソール画面で動作するブロック崩しゲームのソースコード解説です。Win32 APIのコンソールAPIを使用しています。
目次は以下の通りです。
- コンソールに文字を並べてブロック崩しを作る
- ボールの反射ルールを決める
- Win32 APIで画面出力,キー入力を支配する
- Win32 APIを使う準備をする
- 「スクリーン・バッファ」を用意する
- 画面を消去するcls関数
- 画面に文字を打つsetScreen関数
- 画面を「覗く」getScreen関数
- getScreenType関数で具体的な情報を知る
- 移動方向を回す
- ボールを移動し,当たったブロックを消す
- キーは押されているか?
- 状態をリセットしてからキーを読み取る
- 操作中のウィンドウではないときはポーズする
- 何もしないで寝る
- コラム コンパイルして遊んでみよう
プロセッサの仕組みってこうだったのか! C言語で作るCPUエミュレータ [日経ソフトウェア2009年2月号掲載]†
C言語で作成したCOMET II/CASL IIのアセンブラ+エミュレータの全ソース解説です。
目次は以下の通りです。
- CPUの正体を正しく理解しよう
- CPUが握る究極的価値
- 命令表のカベを破る打開策「エミュレータ」
- 花開くエミュレーション時代
- 案外単純なCPUの基本構造
- CPUエミュレータ作りで見えるもの
- エミュレータの実装
- 最大の敵「フラグ」を理解する
- 仕様から,特徴と「真の姿」を見いだす
- 命令セットを吟味し,共通性を見つける
- GR0とXのトリック
- アセンブラの実装
- 命令解析の憂うつ
- 命令に対応するビット・パターンを組み立てる
- アセンブラで処理する即値の代理
- メモリーの割り当て
- ハノイの塔を実行してみよう
- 自作エミュレータならカスタマイズも自在