ARM -A9 基础学习()

ARM -A9  基础学习


1)裸机程序 VS 应用程序

(1)应用程序中,.text/.rodata/.data/.bss段的位置是固定的,而裸机程序中需要指定这些段的位置

(2)应用程序中,栈非常大,在裸机程序中,栈非常小。

(3)应用程序中,有标准的库支持,而裸机程序中,没有标准库的支持。


2)ARM指令集

CUP & 指令集

 CPU       ARM7  ARM9  ARM10  ARM11  cortex-A8   cortex-A9
    指令集    ARMv4  ARMv4  ARMv5   ARMv6  ARMv7      ARMv7


3)条件助记符(根据条件标志位(N Z C V)来判断条件是否成立)
       

条件助记符          条件标志位              含义                    理解
       EQ                   Z = 1                   相等                    int x, y
                                                                             x - y
       NE                   Z = 0                   不相等                   ...
       CS                   C = 1                   无符号的数大于或等于    unsigned int x, y;
                                                                             x - y
       CC                   C = 0                   无符号的数小于           ...
       MI                   N = 1                   结果为负数               ...
       PL                   N = 0                   结果为正数或0            ...
       VS                   V = 1                   结果溢出                 ...
       VC                   V = 0                   结果未溢出               ...
       HI                   C = 1且Z = 0            无符号的数大于          CS 基础上排出等于
       LS                   C = 0或Z = 1            无符号的小于或等于      CC 基础上加上等于
       GE                   N = V                   带符号的数大于或等于    int x, y;
                                                                             x - y
                            N = 0          且 V = 0
                            ---------------   -----
                            结果为正数或0     未溢出   说明原本结果为正数或0
                            
                            N = 1          且 V = 1
                            --------------    ------
                            结果为负数        溢出    说明原本的结果为正数
                            
       LT                   N != V                  带符号的数大于或等于     int x, y;
                                                                             x - y
                            N = 0          且 V = 1
                            ---------------   -----
                            结果为正数或0     溢出       说明原本的结果为负数
                            
                            N = 1          且 V = 0
                            ---------------   -----
                            结果为负数        未溢出    说明原本的结果为负数
                            
       GT                   Z = 0 且 N = V                                  GE 基础上排除等于
       LE                   Z = 1 或 N != V                                 LT 基础上加上等于


4)逻辑位运算

           按位与
            0001 0011 data
           &0000 1001 mask
           --------------
            0000 0001 结果
            
            特点: mask为1的位, 对应的数据位保留, mask为0的位,对应的数据位被清0
           
           按位或
            0001 0011 data
           |0000 1001 mask
           --------------
            0001 1011 结果
            
            特点: mask为1的位, 对应的数据位被置1, mask为0的位,对应的数据位不变
           
           按位取反
           ~0001 0011 data
           ---------------
            1110 1100 结果
           
           按位异或
            0001 0011 data
           ^0000 1001 mask
           --------------
            0001 1010 结果
            
            特点: mask为1的位, 对应的数据位取反, mask为0的位,对应的数据位不变
           
           位清除
               0001 0011 data
           BIC 0000 1001 mask
               --------------
               0001 0010 结果
               
            特点: mask为1的位, 对应的数据位清0, mask为0的位,对应的数据位不变

5)跳转指令

(1)B:

作用: 跳转指令B使程序跳转到指定的地址执行程序(跳转范围是PC -32Mb到PC+32Mb)

指令格式: B[cond] <label>

(2)BL:带连接的跳转指令BL将下一条指令的地址拷贝到r14(即返回地址连接寄存器LR)寄存器中,然后跳转到指定地址运行程序。

指令格式:  BL[cond] <label>    

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值