プログラムローダーと呼ばれる仕組みがある。 ただ、WindowsではPCの電源を入れて起動するタイミングでプログラムローダーが語られる。 マイコン(OSがない)ならある決まったROMから実行し、RAMに変数領域やヒープ領域、スタック領域を設定する。 Windowsを使っているならa.exeを実行しらたらcmd.exeかマウスクリックで実行した場合はExploreはOSがプロセスを作るために提供しているAPIを使ってプロセスを作り、a.exeファイルをほぼそのまま4GBのメモリ空間に展開する。ほぼそのままというのはコンパイラがWindows用のメモリ空間を知っているのでコンパイラはその空間にマッチするようにコンパイルしているためです。 そのメモリ空間とは、具体的にはセクションというものがある。 .text プログラムコード .data 実行から終了までいつでも使える初期値を持つデータ .bs
![プログラムはだれがメモリ上に配置する? - chugoku @ ウィキ](https://cdn-ak-scissors.b.st-hatena.com/image/square/45c4684c76601e94abbe94966d9d5a26153b8fbd/height=288;version=1;width=512/https%3A%2F%2Fimg.atwiki.jp%2F_img%2Fog_image.png)