Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プログラム実行時、メモリとCPUはどのように 連動して動くのか

プログラム実行時、メモリとCPUはどのように 連動して動くのか

書籍「プログラムはなぜ動くのか」を読み、今まで理解がバラバラだった用語がスッキリまとまりました。
その中から第1章の内容を中心に図解し、社内自主学習会として発表した資料を公開します。

補足:現在は第3版が最新です
プログラムはなぜ動くのか 第3版
https://www.yodobashi.com/product/100000086601330719/

Avatar for Toshiki003

Toshiki003

August 09, 2025
Tweet

Other Decks in Programming

Transcript

  1. アジェンダ 1, 低レイヤを学ぶ意味 2, 本日のめあて 3, 一問一答 4, 用語の解説 5,

    プログラムが動く全体像 6, データを解釈するということ
  2. 5, プログラムが動く全体像 - 言語化 - C言語の例 1、ユーザーが高級言語でプログラミングする 2、コンパイラを使ってコンパイルし、実行可能ファイル(Windowsな ら.exe,Linux/MacOSは拡張子なしファイル)としてストレージに保存される 3、プログラムを実行する(GUIならダブルクリック)

    4、ストレージの実行可能ファイルのコピーをメモリに作成する  (=ロードする) 5、メモリの実行可能ファイル(マシン語)からCPUのレジスタへ、プログラム開始アド レスと命令とデータが渡される 6、CPUのレジスタで演算処理される 7、プログラムの終了または終了命令を受け取ったら、CPUの処理は終了する →Javaは上記の説明に中間コード(バイトコード)が入ってくる
  3. 6, データを解釈するということ 全ては2進数 データ自体には「これは文字だ」「これは画像の一部だ」といった情報は含まれてい ません。データの意味は、それを取り扱うプログラムや、データが格納されているファイ ルのフォーマット(形式)によって決まります。 つまり、同じ8ビット(1バイト)のデータでも、 ・文字コードとして見れば”a” ・画像データとして見れば色の一部 ・音声データとして見れば音の一部

    のようにコンテキスト(文脈)によってまったく異なる意味を持つのがコンピュータの世界 の興味深い点です。データそのものは単なる0と1の羅列であり、その解釈方法を決め るのがプログラムやファイル形式なのです。                            By Gemini AI回答
  4. 4, 用語の解説 - その他 - 6)コンパイル  高水準言語で書かれたプログラムをマシン語にすること。そのための  変換プログラムをコンパイラという。 TypeScript→JavaScriptのように、高級言語か ら高級言語の変換もある。これはコンパイルの

    定義に当てはまらないけれど? 🤔 現代では、「ある言語で書かれたコードを、別 の言語のコードに変換すること」という広い意 味でコンパイルという用語が使われているらし い。厳密に区別するなら、 TS→JSはトランス パイルと呼ぶ。
  5. 4, 用語の解説 - その他 - 7)ネイティブコード・中間コード・ソースコード CPUが理解できる(≒母国語)のがネイティブコード 、つまりマシン語を指す 人間が読みやすい形がソースコード 。C,

    Java, Ruby, PHP, JS, Python, Go … ソースコードをコンパイルしてマシン語にするが、「CPUやハードの種類によってマシン 語の解釈は異なる」という課題が。 →動作環境の差異をなくすために、中間コード(バイトコード) を生成する言語もある。 Java、C#など