您的位置:首页 > 其它

ARM -A9 基础学习()

2016-01-21 20:36 190 查看
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>    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息