「プログラムはなぜ動くのか(第2版)」の問い抜粋
↑↑上記の本を読んでみた。プログラムを書いてる人は多くても、実際にどうやって動いているのかわからない人は少なくないと思う。
本書であるが、とおして読んでみても、そこまで理解できなかった。
要は、CやJavaなどの高級言語→アセンブリ言語に変換→マシン語みたいな流れだと勝手に解釈。
ここでは、本書の中に書かれていた練習問題を抜粋して載せている。主に初級者向けだけど、中級者向けの問いもあるので、意外に全部分かる人はいないのでは・・・
答えは問いの下に隠れてるので、ドラッグしてください。
第1章 プログラマにとってCPUとはなにか
・プログラムとは、何ですか?
→コンピュータに実行させる処理の順番を示すもの
・プログラムの中には、何が含まれていますか
→命令とデータ
・マシン語とは、何ですか?
→CPUが直接解釈できる言語
・実行時のプログラムは、どこに格納されていますか
→メモリー
・メモリーのアドレスとは、何ですか?
→メモリー上で命令やデータが格納されている場所を示す値
・コンピュータの構成要素の中で、プログラムを解釈・実行する装置は何ですか
→CPU
第2章 データを2進数でイメージしよう
・32ビットは何バイト?
→4バイト
・01011100という2進数は10進数でいくつになる?
→92
・00001111という2進数を2桁左シフトすると、元の数を何倍したことになる?
→4倍
・歩数表現で表された8桁の2進数1111111は10進数ではいくつになる?
→-1
・歩数表現で表された8桁の2進数10101010を、16桁の2進数で表すとどうなる?
→1111111110101010
・グラフィックスのパターンを部分的に斑点させるためには、なんという論理演算を使う?
→XOR演算
コンピュータが小数点数の計算を間違える理由
・2進数の0.1は、10進数でいくつ?
→0.5
・小数点以下3桁の2進数で、10進数の0.625を表せる?
→表せる
・小数点数を符号、仮数、基数、指数という4つの部分に分けて表す形式をなんと呼ぶ?
・2進数の基数はいくつ?
→2
・表せる範囲の中央の値を0とみなすことで、符号ビットを使わずにマイナスの値を表す方法をなんと呼ぶ?
→イクセス表現
第4章 四角いメモリーを丸く使う
・アドレス信号ピンを10本持ったメモリーICで指定できるアドレスの範囲は、いくつですか
→0~1023
・高水準言語のデータ型は、何を表すものですか?
→メモリー領域を専有するサイズとそこに格納されるデータの形式
・32ビットでメモリーアドレスを表す環境では、ポインタとなる変数のサイズは何ビットですか?
→32ビット
・物理的なメモリーの構造と同様なのは、何バイトのデータ型の配列ですか?
→1バイト
・LIFO(後入れ先出し)方式でデータを読み書きするデータ構造をなんとよぶ?
→スタック:逆の先入れ先だし方式(FIFO)での読み書きはキューという。
・データの大小に応じてリストが2方向に枝分かれするデータ構造をなんとよぶか
→2分探索木(バイナリ・サーチ・ツリー)
第5章 メモリーとディスクの親密な関係
・ストアドプログラム方式とは何のこと?
→記憶装置にプログラムを格納し、逐次実行する方式
・メモリーを使ってディスクのアクセス速度を向上させる仕組みをなんと呼ぶ?
→ディスクキャッシュ
・ディスクの一部を仮想的にメモリーとして使う仕組みをなんと呼ぶ
・Windowsにおいて、プログラムの実行時に、動的に結合される関数やデータを格納したファイルをなんと呼ぶ?
→DLL
・プログラムのEXEファイルの中に、関数を静的に結合することをなんと呼ぶ?
→スタティック・リンク
・Windowsパソコンにおいて、一般的なハードディスクの1セクターは何バイト?
→512バイト
第6章 自分でデータを圧縮してみよう
・ファイルにデータが記憶される基本単位は?
→1バイト
・ファイルの内容を「データの値×繰り返し回数」で表すことで、圧縮する技法は、ランレングス法とハフマン法のどちら?
→ランレングス法
・Windowsパソコンでよく使われるシフトJISコードという文字コードでは、半角英数の1文字を何バイトのデータで表す?
→1バイト
・BMP形式の画像ファイルは、圧縮されている?
→圧縮されていない
・可逆と非可逆圧縮の違いは?
→圧縮されたデータを元通りに戻せるのが可逆圧縮、元通りに戻せないのが非可逆圧縮
第7章 プログラムはどんな環境で動くのか
・アプリケーションの動作環境は、何で示される?
→OSとコンピュータ本体の種類
・Macintosh用のOS(Mac OS)は、AT互換機でも動作するか?
→動作しない
→アプリケーションをソースコードで提供し、環境に合わせてコンパイルすることで実行可能にする仕組み
→バイトコードとなったJavaアプリケーションを実行すること
第8章 ソース・ファイルから実行可能ファイルができるまで
・CPUが解釈、実行出来る形式のプログラムを何コードと呼びますか
→ネイティブコード
・複数のオブジェクトファイルを結合して、EXEファイルを生成するツールをなんと呼ぶ?
→リンカー
・拡張子が.objとなったファイルの内容は、ソースコードとネイティブコードのどちら?
→ネイティブコード
・複数のオブジェクトファイルをまとめて収録したファイルをなんと呼ぶ?
→ライブラリファイル
・WindowsDLLファイルに格納された関数の呼び出し情報だけを持つファイルをなんと呼ぶ?
→インポートライブラリ
・プログラムの実行時に、データやオブジェクトのために動的に確保されるメモリー領域をなんという?
→ヒープ
第9章 OSとアプリケーションの関係
・モニタープログラムの主な機能は?
→プログラムのロードと実行
・OSの上で動作するプログラムのことをなんと呼ぶ?
→アプリケーションまたは応用プログラム
・OSが提供する機能を呼び出すことをなんと呼ぶ?
・GUIとは何の略語?
→Graphical User Interface
・WYSIWYGとは何の略語?
→What You See Is What You Get:ディスプレイに表示されたものをそのまま印刷できるWindowsの特性
第10章 アセンブリ言語からプログラムの本当の姿を知る
・ネイティブコードの命令に、その機能を表す英語の略称をつけたものをなんと呼ぶ?
・アセンブリ言語のソースコードをネイティブコードに変換することをなんと呼ぶ?
・ネイティブコードをアセンブリ言語のソースコードに逆変換することをなんと呼ぶ?
→逆アセンブルする
・アセンブリ言語のソース・ファイルの拡張子は、一般的に何ですか?
→.asm
・アセンブル意言語のプログラムにおけるセグメントとは何ですか?
→プログラムを構成する命令やデータをまとめたグループのこと
・アセンブリ言語のジャンプ命令は何のために使われる?
→プログラムの流れを任意のアドレスに移す
第11章 ハードウェアを制御する方法
・アセンブルリ言語で、周辺装置と入出力を行う命令は何ですか
→IN命令とOUT命令
・I/Oとは、何の略語?
→Input/Output
・周辺装置を識別する番号をなんと呼ぶ?
→I/OアドレスまたはI/Oポート番号
・IRQとは、何の略語?
→Interrupt Request
・DMAとは、何の略語?
→Direct Memory Access:DMAとは、CPUを介さずに周辺装置が直接コンピュータのメモリーとデータ転送を行うこと
・DMAを行う周辺装置を識別するための番号をなんと呼ぶ?
→DMAチャネル