回答編集履歴
1
補足の質問を受けて追記
test
CHANGED
@@ -11,3 +11,27 @@
|
|
11
11
|
|
12
12
|
|
13
13
|
ARM系CPUは設定次第でどちらにもなれるはずです。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
**補足情報(?)を受けて追記**:2019-01-24 21:54
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
> `bx r4` という分岐命令があるので、これはr4はアドレスという扱いで間違いないでしょうか。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
ARMのWEBサイトにリファレンスがあるので、そちらを見ましょう。
|
28
|
+
|
29
|
+
[ARM 命令と Thumb 命令 > BX](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489ij/CIHGJAEJ.html)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
「Rm 分岐先アドレスを保持するレジスタを指定します。」と説明されているので、`r4`レジスターの内容をアドレスとして分岐します。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
ただ、ここで`BX`命令の面白い(注意しなければならない)ところは、命令セットの切り替えも同時に行える、というところです。Rm(ここでは`R4`)レジスターのビット0の値によって、分岐後にARM命令かまたはThumb(サム)命令で動き始めるそうです。Thumb命令とは簡単に言うとフルスペックのARM命令ではなく、命令長や機能を削減して、組み込み用途のような制限のある状況で動くに適したARM系CPUの命令セットのことです。昔のARM CPUにはありませんでしたが、組み込み用途の軽量ARM(Cortex-M系)CPUの出現で出てきたような気がします。
|