Справочник по командам ARM

Тема в разделе "WASM.BOOKS и WASM.BLOGS", создана пользователем slavanap, 21 авг 2011.

  1. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Прошу посоветовать хороший справочник по командам ARM для процессоров CNS21xx (STR81xx / STAR 81xx; семейство ARMv4l) на английском или русском языке. Хорошим справочником для x86 могу назвать книгу
    Виктора Юрова "Assembler. Специальный справочник. 2-е издание."

    P.S. Имеется рабочее устройство с
    Linux NAS 2.6.16-star #812 Mon Nov 17 15:27:34 CST 2008 armv4l GNU/Linux
    от фирмы Agestar. Сейчас на нём стоит rootfs от Debian и идущее в комплекте ядро, которое сменить не удалось. Собственно, есть желание научиться понимать вывод
    objdump -d
    Например,
    Код (Text):
    1. 00000530 <rst_btn_poll_thread>:
    2.  530:   e1a0c00d        mov     ip, sp
    3.  534:   e92dd9f0        push    {r4, r5, r6, r7, r8, fp, ip, lr, pc}
    4.  538:   e24cb004        sub     fp, ip, #4      ; 0x4
    5.  53c:   e24dd014        sub     sp, sp, #20     ; 0x14
    6.  540:   e3cd6d7f        bic     r6, sp, #8128   ; 0x1fc0
    7.  544:   e3c6603f        bic     r6, r6, #63     ; 0x3f
    8.  548:   e596300c        ldr     r3, [r6, #12]
    9.  54c:   e3e04000        mvn     r4, #0  ; 0x0
    10.  550:   e58341f8        str     r4, [r3, #504]
    11.  554:   e58341f4        str     r4, [r3, #500]
    12.  558:   e59f0128        ldr     r0, [pc, #296]  ; 688 <rst_btn_poll_thread+0x158>
    13.  55c:   ebfffffe        bl      0 <daemonize>
    14.  560:   e596000c        ldr     r0, [r6, #12]
    15.  564:   ebfffffe        bl      0 <flush_signals>
    16.  568:   e596300c        ldr     r3, [r6, #12]
    17.  56c:   e24b8028        sub     r8, fp, #40     ; 0x28
    18.  570:   e58341f4        str     r4, [r3, #500]
    19.  574:   e58341f8        str     r4, [r3, #504]
    20.  578:   ebfffffe        bl      0 <recalc_sigpending>
    21.  57c:   e596000c        ldr     r0, [r6, #12]
    22.  580:   e24b7030        sub     r7, fp, #48     ; 0x30
    23.  584:   e59f1100        ldr     r1, [pc, #256]  ; 68c <rst_btn_poll_thread+0x15c>
    24.  588:   e2800f69        add     r0, r0, #420    ; 0x1a4
    25.  58c:   e50b8028        str     r8, [fp, #-40]
    26.  590:   e50b8024        str     r8, [fp, #-36]
    27.  594:   e50b7030        str     r7, [fp, #-48]
    28.  598:   e50b702c        str     r7, [fp, #-44]
    29.  59c:   ebfffffe        bl      0 <sprintf>
    30.  5a0:   e596300c        ldr     r3, [r6, #12]
    31.  5a4:   e5932004        ldr     r2, [r3, #4]
    32.  5a8:   e5921000        ldr     r1, [r2]
    33.  5ac:   e3110002        tst     r1, #2  ; 0x2
    34.  5b0:   1a00019d        bne     67c <rst_btn_poll_thread+0x14c>
    35.  5b4:   e1a00008        mov     r0, r8
    36.  5b8:   ebfffffe        bl      0 <interruptible_sleep_on>
    37.  5bc:   e59f30cc        ldr     r3, [pc, #204]  ; 690 <rst_btn_poll_thread+0x160>
    38.  5c0:   e5932000        ldr     r2, [r3]
    39.  5c4:   e3520001        cmp     r2, #1  ; 0x1
    40.  5c8:   0a00019d        beq     67c <rst_btn_poll_thread+0x14c>
    41.  5cc:   e59f50c0        ldr     r5, [pc, #192]  ; 694 <rst_btn_poll_thread+0x164>
    42.  5d0:   e59f40c0        ldr     r4, [pc, #192]  ; 698 <rst_btn_poll_thread+0x168>
    43.  5d4:   e5953000        ldr     r3, [r5]
    44.  5d8:   e594200c        ldr     r2, [r4, #12]
    45.  5dc:   e1a00007        mov     r0, r7
    46.  5e0:   e0623003        rsb     r3, r2, r3
    47.  5e4:   e3530f7d        cmp     r3, #500        ; 0x1f4
    48.  5e8:   e3a0100a        mov     r1, #10 ; 0xa
    49.  5ec:   8a000180        bhi     608 <rst_btn_poll_thread+0xd8>
    50.  5f0:   e59f30a4        ldr     r3, [pc, #164]  ; 69c <rst_btn_poll_thread+0x16c>
    51.  5f4:   e5932000        ldr     r2, [r3]
    52.  5f8:   e3120001        tst     r2, #1  ; 0x1
    53.  5fc:   0a000166        beq     5a0 <rst_btn_poll_thread+0x70>
    54.  600:   ebfffffe        bl      0 <interruptible_sleep_on_timeout>
    55.  604:   ea000173        b       5d4 <rst_btn_poll_thread+0xa4>
    56.  608:   e3a04000        mov     r4, #0  ; 0x0
    57.  60c:   ebfffffe        bl      0 <button_down_beep>
    58.  610:   ebfffffe        bl      10 <remove_all_proc_flag>
    59.  614:   e1a01004        mov     r1, r4
    60.  618:   e1a02004        mov     r2, r4
    61.  61c:   e59f007c        ldr     r0, [pc, #124]  ; 6a0 <rst_btn_poll_thread+0x170>
    62.  620:   ebfffffe        bl      0 <create_proc_entry>
    63.  624:   e1500004        cmp     r0, r4
    64.  628:   15804038        strne   r4, [r0, #56]
    65.  62c:   1580403c        strne   r4, [r0, #60]
    66.  630:   e59f406c        ldr     r4, [pc, #108]  ; 6a4 <rst_btn_poll_thread+0x174>
    67.  634:   e5943060        ldr     r3, [r4, #96]
    68.  638:   e1a05004        mov     r5, r4
    69.  63c:   e2434060        sub     r4, r3, #96     ; 0x60
    70.  640:   e1540005        cmp     r4, r5
    71.  644:   0a000166        beq     5a0 <rst_btn_poll_thread+0x70>
    72.  648:   e2840f69        add     r0, r4, #420    ; 0x1a4
    73.  64c:   e59f1034        ldr     r1, [pc, #52]   ; 688 <rst_btn_poll_thread+0x158>
    74.  650:   ebfffffe        bl      0 <strcmp>
    75.  654:   e3500000        cmp     r0, #0  ; 0x0
    76.  658:   0a00019a        beq     670 <rst_btn_poll_thread+0x140>
    77.  65c:   e5943060        ldr     r3, [r4, #96]
    78.  660:   e2434060        sub     r4, r3, #96     ; 0x60
    79.  664:   e1540005        cmp     r4, r5
    80.  668:   1a000190        bne     648 <rst_btn_poll_thread+0x118>
    81.  66c:   ea000166        b       5a0 <rst_btn_poll_thread+0x70>
    82.  670:   e1a00004        mov     r0, r4
    83.  674:   ebfffffe        bl      0 <wake_up_process>
    84.  678:   ea000166        b       5a0 <rst_btn_poll_thread+0x70>
    85.  67c:   e59f0024        ldr     r0, [pc, #36]   ; 6a8 <rst_btn_poll_thread+0x178>
    86.  680:   e3a01000        mov     r1, #0  ; 0x0
    87.  684:   ebfffffe        bl      0 <complete_and_exit>
    88.  688:   000000a0        .word   0x000000a0
    89.  68c:   000000a8        .word   0x000000a8
    90.         ...
    91.  698:   00000010        .word   0x00000010
    92.  69c:   fff12004        .word   0xfff12004
    93.  6a0:   0000004c        .word   0x0000004c
    94.         ...
    95.  6ac:   e1a00000        .word   0xe1a00000
    P.P.S. Не уверен, в том ли разделе я создал тему. Прошу модераторов переместить, если ошибся.
     
  2. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Скачать документацию АРМовскую и не мучиться. А книг таких, вероятно, не существует (во всяком случае, на русском, да и на английском под вопросом).
     
  3. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Посмотрите http://www.peter-cockerell.net/aalp/
    В сети есть книга этого автора
     
  4. ConstZ

    ConstZ New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2008
    Сообщения:
    42
    Хороший справочник по командам ARM

    Dedian Etch на NAS

    P.S.
    Код (Text):
    1. ; загрузка, "демонизация"
    2. ...
    3.  5bc:   e59f30cc        ldr     r3, [pc, #204]  ; 690 здесь лежит адрес порта GPIO
    4.  5c0:   e5932000        ldr     r2, [r3]        ; читаем
    5.  5c4:   e3520001        cmp     r2, #1          ; 0x1  проверяем нажатие кнопки
    6.  ...
    7. ; обработка нажатия
    8.  608:   e3a04000        mov     r4, #0  ; 0x0
    9.  60c:   ebfffffe        bl      0 <button_down_beep>
    10.  610:   ebfffffe        bl      10 <remove_all_proc_flag>
    11.  614:   e1a01004        mov     r1, r4   ; второй параметр (0)
    12.  618:   e1a02004        mov     r2, r4   ; третий параметр (0)
    13.  61c:   e59f007c        ldr     r0, [pc, #124]  ; 6a0 здесь лежит первый параметр для create_proc_entry (4c)
    14.  620:   ebfffffe        bl      0 <create_proc_entry>
    15. ...
    16. ; работа со строками, похоже для отладки
    17. ...
    18. ; выход
    19.  680:   e3a01000        mov     r1, #0  ; 0x0
    20.  684:   ebfffffe        bl      0 <complete_and_exit>
    21.  
    22. ; данные
    23.  688:   000000a0        .word   0x000000a0
    24.  68c:   000000a8        .word   0x000000a8
    25.         ...
    26.  698:   00000010        .word   0x00000010
    27.  69c:   fff12004        .word   0xfff12004
    28.  6a0:   0000004c        .word   0x0000004c
    29.         ...
    30.  6ac:   e1a00000        .word   0xe1a00000
     
  5. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Я по сборнику на сайте arm'а разбирал, там все очень подробно и просто написано.
     
  6. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Всем спасибо. Теперь литературы для изучения достаточно. :)
     
  7. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Только читайте внимательно: там полно разных нюансов, в т.ч. в зависимости от версии архитектуры. Ну и документация на собственно процессор нужна: система команд -- далеко не всё, есть же всякая периферия, а там каждый производитель изгаляется, как может...