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