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

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

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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

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

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

Avatar for Toshiki003

Toshiki003

August 09, 2025

More Decks by Toshiki003

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#など