コンピュータは ユーザーから与えられたデータをメモリに保存しなければ そのデータを取り扱うことができません。 命令レジスタ 命令デコーダ プログラムカウンタ 

マックス「ということはメモリに蓄えられたデータを


CPUは自分の中にあるレジスタという器にとりだして


料理しているわけだ。」



🍋だから



天国にいけるC言語入門ていう本で


最初からずっと


コンピュータは


ユーザーから与えられたデータをメモリに保存しなければ


そのデータを取り扱うことができません。


といっている意味が


ここで💖わかったんじゃな~い?



マックス「いまごろ わかったんか~い


まあ確かに メモリに蓄えられたデータを


CPU内部の器に盛るのだから当然か・・・」



🍋ついでにいうとユーザーから与えられたデータだけでなく


コンピュータに与えられる機械語の命令自体が


メモリに格納されるんだよ


そして 


CPUはメモリから


メモリに格納された機械語の命令を


取り出して


命令レジスタ(Instruction Register)という記憶装置に格納します


命令レジスタ(Instruction Register)は機械語の命令を格納するレジスタなんだ


数値データを格納するレジスタたちとは違う役割を持つレジスタなんだ


そして


その機械語の命令が保存されているメモリのアドレス番号を格納しているのが


プログラムカウンタというレジスタになっています。


つまり


プログラムカウンタが格納しているアドレス番号のついた


メモリに格納されている機械語の命令を


命令レジスタは格納するんだ。


マックス「ユーザーから与えられたデータだけでなく


コンピュータに与えられる機械語の命令自体が


メモリに格納される・・・


ぜんぜんついでじゃなくて


めちゃくちゃ本体なことなのではないか~い」



🍋よかったね。 ここにきて😊



マックス「つっこみどころ満載だな


俺自身に・・・」




🍋そして


命令レジスタという記憶装置に格納された


機械語の命令は


命令デコーダ(Instruction Decoder)という装置によみこまれ実行されていきます。


機械語の命令が実行されると


プログラムカウンタというレジスタは


いま


プログラムカウンタに格納していた


(機械語の命令を格納していたメモリがもつ)アドレス番号より


1だけおおきい


アドレス番号を格納することになります



☆    ☆    ☆



☆    ☆    ☆


🍋となると


命令レジスタに格納されるのは



プログラムカウンタが格納しているアドレス番号の付いたメモリに


格納されている機械語の命令


から


1つ大きいアドレス番号の付いたメモリに


格納されている機械語の命令


ということになり


命令デコーダという装置によみこまれ実行されていきます。



つまり


プログラムカウンタは機械語の命令が実行される順序を


管理しているわけなんだ



マックス「つまり


プログラムカウンタが指定するアドレスのメモリに


格納されている機械語の命令が命令レジスタに格納され


命令レジスタに格納された機械語の命令を


命令デコーダが読み取って


プログラムが実行されるというわけだ・・・」