OK05 色々試してみた (5)

ええと kernel.list という出力があるのを発見していたり。
以下が

ldr r4,=pattern
ldr r4,[r4]

以下に翻訳されてるのかどうか。

    80a8:      e59f402c     ldr r4, [pc #44]    ; 80dc <loop$+0x28>
    80ac:      e5944000     ldr r4, [r4]

80dc な記述が以下。

    80dc:      00008124     .word   0x00008124

ええと、ダンプによると 8124 番地の中身は不明。ケツの出力が以下。

    8120:      20003000     .word   0x20003000

これ、動くソレのダンプを確認してみた方が良いですね。ちなみに以下な場合の出力が

diff --git a/source/main.s b/source/main.s
index e03235a..28f881a 100755
--- a/source/main.s
+++ b/source/main.s
@@ -60,8 +60,7 @@ bl SetGpioFunction
 * sequence.
 */
 ptrn .req r4
-ldr ptrn,=pattern
-ldr ptrn,[ptrn]
+ldr ptrn,=0b11111111101010100010001000101010
 seq .req r5
 mov seq,#0

以下な形です。

    80a8:      e59f4028     ldr     r4, [pc, #40]  ; 80d8 <loop$+0x28>

80d8 番地がどうなってるかというと

    80d8:      ffaa222a     .word   0xffaa222a

これって翻訳する側の問題なのではないか、という話が (ry

ビットパターン的に

代入されてるソレは

0x00008124

てのは

0b00000000000000001000000100100100

で、

0xffaa222a

0b11111111101010100010001000101010

になるのか。でも駄目なパターンって点きっぱなんだけどな。