プログラムのメモリはその確保場所から3つのセグメントに大別できる。
テキストセグメント、データセグメント、スタックセグメントである。
テキストセグメント
-プログラムの実行部分(コード部分)が含まれる。
-上書きされるとまずいため、書き込み保護された領域に書き込まれる。
-文字列定数もココに書き込まれる。またconst intで宣言したglobal変数もここ。
-要するに読み込み専用のものはテキストセグメントに含まれる。
データセグメント
-mallocにより確保されるヒープ領域、グローバル変数が格納されるBSS,データ領域に更に細かく分けられる。BSSはBlock started by Symbolの略、プログラムがメモリ上にロードされた時に初期値0が書き込まれる(ポインタの場合はNULLが書き込まれる)。
スタックセグメント
-ローカル変数、復帰情報、引数、関数の戻り値などが一時的に収められる場所
static変数はどこ
-データの書き換えができるかつ、関数の終了とともに消滅しない->消去法的にデータセグメントに割り当てられる。
2012年9月10日月曜日
2012年9月3日月曜日
プログラムのハードとの関わり、実行のされ方。
プログラムのハードとの関わり、実行のされ方。
メモリ・・主記憶装置(プログラムが実行されるときには必ずメモリ上にロードされている必要がある)
ハードディスク・・・補助記憶装置
OSの管理下で実行されるプログラム・・アプリケーションプログラム
アプリケーションからOSの機能を呼び出すこと・・・システムコール、APIと言われることもある。
Q:プログラムはハードディスクに入っている?
A:ハードディスクに収められているが、実行時にはメモリにコピーされてから実行される。
-プログラムをメモリにコピーすることをロード
-実行可能なプログラムのファイル(即ちメモリにコピーされた)をロードモジュールと言う
Q:アドレスとは
A:メモリに付けられた番地のこと、メモリアドレスとも言う
-番地はコンピュータは数字で表現されるが、人間にとってはわかりにくいため、アドレスに
対して名前をつける。 char* tanaka のようにである。
Q:i++というインクリメント処理はCPUでどのように行われている?
A: 1.レジスタに値をメモリから取ってくる、
2.CPUが演算する
3.演算後の値がレジスタに書かれる
4.レジスタに書かれた内容をメモリに書き出す
-メモリからレジスタにロードして、足し算をしてレジスタの内容をメモリにストアする。
-ストア・・メモリに値を代入すること。
Q:アセンブラはCPUとの命令に1対1で対応しているが、文字による命令を行うことができる。
この文字による入力を何というか
A:ニーモニック
Q:コンパイラとは?
A:アセンブラがCPUの命令(機械語)に1対1で対応しているが、より複雑な命令を機械語に翻訳するために開発された変換機器。
メモリ・・主記憶装置(プログラムが実行されるときには必ずメモリ上にロードされている必要がある)
ハードディスク・・・補助記憶装置
OSの管理下で実行されるプログラム・・アプリケーションプログラム
アプリケーションからOSの機能を呼び出すこと・・・システムコール、APIと言われることもある。
Q:プログラムはハードディスクに入っている?
A:ハードディスクに収められているが、実行時にはメモリにコピーされてから実行される。
-プログラムをメモリにコピーすることをロード
-実行可能なプログラムのファイル(即ちメモリにコピーされた)をロードモジュールと言う
Q:アドレスとは
A:メモリに付けられた番地のこと、メモリアドレスとも言う
-番地はコンピュータは数字で表現されるが、人間にとってはわかりにくいため、アドレスに
対して名前をつける。 char* tanaka のようにである。
Q:i++というインクリメント処理はCPUでどのように行われている?
A: 1.レジスタに値をメモリから取ってくる、
2.CPUが演算する
3.演算後の値がレジスタに書かれる
4.レジスタに書かれた内容をメモリに書き出す
-メモリからレジスタにロードして、足し算をしてレジスタの内容をメモリにストアする。
-ストア・・メモリに値を代入すること。
Q:アセンブラはCPUとの命令に1対1で対応しているが、文字による命令を行うことができる。
この文字による入力を何というか
A:ニーモニック
Q:コンパイラとは?
A:アセンブラがCPUの命令(機械語)に1対1で対応しているが、より複雑な命令を機械語に翻訳するために開発された変換機器。
登録:
投稿 (Atom)