ARM アーキテクチャの基本的な仕組みを理解する方法は次のとおりです。
15 のメイン レジスタがあり、15 番目 (r15) はプログラム カウンタ (PC) です。
プログラム カウンタが特定のレジスタを指している場合、14 行以上を実行するプログラムを作成するにはどうすればよいでしょうか?
明らかにこれは正しくありませんが、たった 15 個のレジスタで大きなプログラムを組み込む方法がわかりません。私は何が欠けていますか?
ARM アーキテクチャの基本的な仕組みを理解する方法は次のとおりです。
15 のメイン レジスタがあり、15 番目 (r15) はプログラム カウンタ (PC) です。
プログラム カウンタが特定のレジスタを指している場合、14 行以上を実行するプログラムを作成するにはどうすればよいでしょうか?
明らかにこれは正しくありませんが、たった 15 個のレジスタで大きなプログラムを組み込む方法がわかりません。私は何が欠けていますか?
プログラムカウンターは、別のレジスターではなく、メモリーを指しています。
レジスタにはプログラム コードは格納されません。プログラム コードはメイン メモリにあり、プログラム カウンタはメモリ内の次の命令の位置を指します。
他のレジスタは、アプリケーションの処理中に一時的な、または頻繁にアクセスされる値を格納するための高速な場所です。
最も単純な形式では、プログラム (命令メモリ)、データ メモリ、スタック メモリ、およびレジスタがあります。
ARM 命令は命令メモリに保存され、プロセッサに何をすべきかを伝える一連のコマンドです。それらはプロセッサのレジスタに格納されることはありません。プログラムカウンターはその命令のみを指します。その命令は、基本的な形式でオペコード(オペレーションコード)と変数/リテラルを持つ単なるコマンドです..
そのため、命令はプログラム カウンターが指す位置からメモリから読み取られる (フェッチされる) ことになります。それはレジスタにロードされませんが、それがデコードされる制御ユニット (つまり、追加、サブ、移動などの操作を知るため) と、その入力と出力の読み取り/保存場所です。
では、操作して保存するための入力/出力はどこにあるのでしょうか? ARM アーキテクチャはロード/ストア アーキテクチャです。これは、R1、R2 .. R7 .. などのレジスタにロードされたデータで動作することを意味します。ここで、レジスタはすべての入力と出力が一時的な変数と見なすことができます。保存されます。レジスタが使用されるのは、レジスタが非常に高速であり、より遅いメモリではなくプロセッサ周波数と同じ速度で動作するためです。
問題は、これらのレジスタに最初に値を入力する方法です。
これらの値はデータ メモリまたはスタック メモリに保存できるため、それらをこれらのレジスタにコピーする命令があり、その後にそれらを操作して値をレジスタに格納する命令が続き、その後に結果をコピーして戻す命令が続きます。メモリー。一部の命令では、レジスタに定数をロードすることもできます。
Instruction 1 // Copy Variable X into R1 from memory
Instruction 2 // Copy Variable Y into R2 from memory
ADD, R3, R1, R2 // add them together
Instruction 3 // Copy back the result into Memory
できるだけシンプルにしようとしましたが、カバーする詳細がたくさんあります。本が必要です:)