KDOC 217: 『基礎からきっちり覚える 機械語入門』
この文書のステータス
- 作成
- 2024-10-27 貴島
- レビュー
- 2024-10-28 貴島
概要
基礎からきっちり覚える 機械語入門は、機械語を一般の人向けに解説する本。
メモ
- コンピュータがどのように動作するかというイメージを掴むためには、実は機械語を見てみるのが一番の早道である。機械語の動作が理解できれば、その上で動く高級言語やOSなどの動作も非常にわかりやすくなる、という
- 10進2進16進対応表(p44)
- 除算というのは負荷の大きな演算であり、加算などの演算に比べると、実行に要する時間がはるかに長い(p51)
- CPUの処理がもっとも効率よく行われるのはバイト、ワード、ダブルワードの各データ型に対してである(p55)
- 説明用の機械語を定義している。レジスタはなく、すべてメモリで制御する
- 値ではなく、そのアドレスの値を参照する命令がある。なぜ間接参照が必要なのかというと、この機能がないとあらかじめ分かっている番地にしかデータを書けないから。たとえば、ユーザの入力はあらかじめわからない。間接参照があると、入力した値をメモリに保管しておけば、あとはそのメモリを参照して使える(p136)
- 値X、X番地の値、X番地が指す値(X番地にある値をアドレスとみなし、その番地の中身に書かれている値)の3つ
- 即値、直接参照、間接参照
- 排他的論理和は片方だけが真のときのみ全体が真になる論理演算。「私はAまたはBどちらかと結婚します」というような場合。両方は犯罪となる
- とてもシンプルな命令の組み合わせで表現できるのを示している
- 当たり前と考えているプログラミングの概念がなぜあるかを、機械語の面から見て解説している。変数や、型
- 機械語ではデータはすべて数字なのだから、演算できてしまう。なので型が必要
- アドレスを人間が管理するのは認識の面と、ズレるので大変である。なので変数が必要
- 昔はNOP命令すなわち「何もしない命令」が重要だった。プログラムを組む際にあらかじめ途中にこの命令を10個ずつくらい挟んでおく。処理を追加しても、その後の番地をすべて変更しなくてよい(p207)
- 変数の型という概念。そのアドレスから始まるデータがどのような目的に使われ、どのような構造を持っているのかを定義したもの(p219)
- 機械語レベルではすべて数値であるために、論理的におかしな計算でもできてしまう。型があると書いた時点でエラーを出せる(p222)
- 関数とはパラメータで指定された変数に対してあるプログラムを適用して得られた結果を返すもの。プロシージャとは関数と同じだが結果を返さないもの(p243)
- プロシージャの例: メモリのある領域を全部0で埋め尽くす、など
- プログラムというのは各ステップごとに内部の状態が変わるが、その状態は2のN乗種類しかない(p323)
関連
- KDOC 232: 『たのしいバイナリの歩き方』。バイナリつながり