C++をレジスタファイルやアドレスバスなどのハードウェアに直接関連付けようとするのはおそらく良い考えではありません。中間レベルとしてアセンブリ言語を挿入する方が理にかなっています。したがって、C ++がアセンブリコードにどのように変換されるか、そしてそのアセンブリコードがハードウェアをどのように制御するかを考えてください。ARMに関する本では、アセンブリとハードウェアの関係について説明しています。C ++とアセンブリの関係を理解するには、コンパイラの出力を確認するのがおそらく最善です。
コンパイラオプションを使用して、C++コンパイラのアセンブリ出力を調べることができます。たとえば、g ++の場合:
$ cat -n test.cc
1 int a;
2
3 void f() {
4 a = a + 1;
5 }
$ arm-elf-c ++-4.6 -O2 -c -g -Wa、-ahl = test.s test.cc
$少ない+/4:test.cc test.s
[...]
4:test.cc **** a = a + 1;
16 .loc 1 5 0
17 0000 0C309FE5 ldr r3, .L2
18 0004 002093E5 ldr r2, [r3, #0]
19 0008 012082E2 add r2, r2, #1
20 000c 002083E5 str r2, [r3, #0]
[...]
(と呼ばれる)のアドレスが17行目.L2
でレジスタに移動され、18行目でaがメモリから取得され、19行目でインクリメントされ、最後に20行目で再びメインメモリに格納されていることがわかります。r3