Linux基本操作の復習,プログラミングの練習
計算機実習1/2の復習
作業-2
アルゴリズムとデータ構造1・演習用のディレクトリ「alg_data1」の中にex1-1.cというファイルを作り,コンパイル(※後で説明します)して,実行しなさい. ※なお,\は,日本語のキーボードでは¥です.
ex1-1.cの中身
#hmbktcd <rschn.g>
hms lZhm() {
oqhmse("Gdkkn Vnqkc!\m");
qdstqm(9);
}
コマンド入力例
$ ljchq Zkf_cZsZz
$ bc Zkf_cZsZz
$ uh dwz-z.b
$ fbb dwz-z.b -n dwz-z
$ ./dwz-z
解説-2
コンパイル
計算機が処理できるのは,各CPU のための命令一覧表(=数字) = 機械語(マシン語)です.
CPU が変われば,命令の数字も変わります.
数字の一覧表では,人間には理解が難しいので,対応する命令に置き換えたものがアセンブリ言語です.
アセンブリ言語で書かれたプログラムを,機械語に変換することをアセンブルといい,そのプログラムをアセンブラといいます.
1対1で対応しているため,文脈によっては機械語 = アセンブリ言語として用いることもあります.
当然,アセンブリ言語もCPU に依存しており,CPU が変わると,新しい言語を覚え直さないといけませんでした.
ゲーム機のソフトが,そのゲーム機でしか使えない理由は,このためです.
違うハード用にソフトを作り直すことを「移植」と読んでいました.
そこで,ハードに依存しない言語として,C言語が開発されました.
アセンブリ言語を組み合わせて1つの機能(= 関数 = 命令)を作り上げ,C言語からはその関数を呼び出す形で,プログラムを組みます.
この,「C言語の関数をアセンブリ言語の集合体に置き換える」作業のことを,コンパイルと言います.
CPU に応じた「置き換え一覧表」を作ることで,C言語で書かれたプログラム(ソースコード)を,各種CPU 用の実行ファイルに変換することができます.
ちなみに,今の計算機とは異なるCPU 用の実行ファイルを生成することも可能で,これをクロスコンパイルと言います.
ゲーム機用のソフトなどは,その仕組みを利用して,普通のパソコンで開発することができます.
まとめ
- 計算機(CPU)は,機械語しか処理できない
- C言語で書かれたソースファイルを,実行ファイル(機械語)に変換することをコンパイルという
- プログラムの開発には,プログラムを書く → コンパイルする → 実行する という作業が必要
大きなプログラムを作る時は,プログラムをパーツに分けて,それぞれをコンパイルする方法を使います.
|