0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[読書メモ]プログラムはなぜ動くのか

Posted at

ソースコードが実行可能ファイルになるまで

プログラムは、人間が読み書き可能な言語で書かれています。
これをソースコードと言います。

しかしコンピュータがプログラムを実行可能にするためには、コンピュータが読み取り可能なマシン語(ネイティブコード)にプログラムを変換する必要があります。
この作業をコンパイルと言います。

コンパイルを行うコンパイラは言語ごとに存在しています。
しかし、その言語ごとのコンパイラが最終的に作成するネイティブコードは同じものになります。(マシン語は言語の差異によりません。)

ちなみに、Javaの場合は、コンパイルを行うとJavaバイトコードが作成されます。
そのJavaバイトコードを、JavaVMが自分の乗っているマシンのマシン語に翻訳するという仕組みになっています。

しかし、このままではまだ実行可能なファイルにはなりません。
作成されたオブジェクトファイル(ネイティブコードに変換されたソースコード)とそれが参照しているライブラリなどへの参照を全てリンクする必要があります。
この作業をリンク、リンカーが行います。

プログラムが実行されるまで

プログラムはハードディスクに格納されています。
それをメモリにロードすることで、CPUが実行できるようになります。

プログラムが実行されるときに確保されるメモリ領域

以下の2種類がある。

  1. スタック
  2. ヒープ

スタック領域

一つの関数が呼び出されると確保され、終了すると解放される。

ヒープ領域

オブジェクトの生成時に確保される。
プログラマが明示的に取得と解放を記述する必要がある。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?