zoukankan      html  css  js  c++  java
  • arm指令

    BL 和 BLX 指令可将下一个指令的地址复制到 lr(r14,链接寄存器)中。
    
    BX 和 BLX 指令可将处理器的状态从 ARM 更改为 Thumb,或从 Thumb 更改为 ARM。
    
    BLX label 无论何种情况,始终会更改处理器的状态。
    
    BX Rm 和 BLX Rm 可从 Rm 的位 [0] 推算出目标状态:
    
    如果 Rm 的位 [0] 为 0,则处理器的状态会更改为(或保持在)ARM 状态
    
    如果 Rm 的位 [0] 为 1,则处理器的状态会更改为(或保持在)Thumb 状态。

    adr指令:
    10: _start 
    0x0000000C           E1A00000           NOP 
    11:           nop
    ldr           r0, _start //从内存地址 _start 的地方把值读入。执行这个后,r0 = 0xe1a00000
    adr         r0, _start   //adr r0, _start 得到 r0 = 0x00000010 这里和具体运行位置无关

    LDR/STR:

    ldr内存到寄存器,str寄存器到内存,刚好相反

    LDR     R1,=0xE0000000  ;R1=0xE0000000
    LDR     R1,0xE0000000   ;将内存中地址为0xE0000000的内容载入到R1
    LDR     R1,[R0]         ;将R0中的数所指定的地址的内容传输到R1

    STR R1,[R0]

     beq:

    .text:00001070 00 29                       CMP             R1, #0  ; Alternative name is '__aeabi_idiv'
    .text:00001072 56 D0                       BEQ             loc_1122 

    bx lr

    arm中lr中保存的是返回地址,与x86的好像是不同的

    指令后带.w说明是32位

    ADD R3,R2,R1,LSL#3; R3ßR2+8*R1

    其中LSL #3 为左移三位

    移位指令:

            LSL:逻辑左移

            LSR:逻辑右移

            ASR:算术右移

            ROR:循环右移

            RRX:扩展为1的循环右移

    //表示r0右移31位与r0相加放入r0
    ADD
    .W R0, R0, R0,LSR#31
  • 相关阅读:
    Google是如何赚钱的?
    网站数据连接
    表单验证
    Web Proxy Autodiscovery Protocol
    把SQL2000的数据库迁移至SQL2005
    WFE与Index服务器之前的通讯
    SOS 的帮助输出
    WinDbg.exe中使用的SOS.dll的命令列表
    HTTPS 简介
    Error: A web configuration modification operation is already running
  • 原文地址:https://www.cnblogs.com/fply/p/8418263.html
Copyright © 2011-2022 走看看