プログラムはなぜ動くのか(1章)
やったこと
引き続き、プログラムはなぜ動くのかの1章を読んだ。
TL
- 前回、プログラムの流れとして、プログラムカウンタを+1ずつ加算していく順次実行のほかに、条件分岐と繰り返し、関数呼び出しが存在していることを知った。
- そして、条件分岐と繰り返しの仕組みにはジャンプ命令という概念が関連していること、関数呼び出しの仕組みにはコール命令とリターン命令という概念が関連していることを理解した。
- ジャンプ命令とは、プログラムカウンタとして指定したメモリのアドレス番地が演算結果によって、飛ばしたり、戻ってきたりできる命令で、フラグレジスタという演算結果を記憶するレジスタが保持している値によって実現される。
- コール命令とは、関数を呼び出す前に関数の次の処理のアドレス番地をメモリのスタックという領域に保存する命令で、リターン命令はそのスタックに保存されたアドレス番地をプログラムカウンタに設定する命令である。
- よって、関数呼び出しの仕組みとして関数を実行した後の処理ができることが求められるのに対して、コール命令によって関数呼び出しの前に次の処理のアドレスをスタックに保存し、リターン命令によって、スタックに保存されている次の処理をプログラムカウンタに格納することで実現できている。
独り言
やっと、第1章を読み終わりそう。 Now in Androidでコードリーディングを始めた。