zoukankan      html  css  js  c++  java
  • 头文件定义和ARM指令


    2015.2.2
    星期一,阴天

    内存管理:内存的分配和释放等
    静态和动态内存:主要是在释放方式上的区别

    静态变量:编译时就已经确定,定义在函数外面
    自动变量:在程序运行时才能在栈中确定
    只读数据节:存放常量的地方,包括字符常量,不修改的数据

    查看数据存放在那个节点:(用命令)
    readelf -S (查看节点号和节点名)
    readelf -x .data a.out

    生命周期:(分成静态,动态)

    两个宏的定义和包含:

    定义一个a.h
    #ifndef _A_H_
    #define _A_H_
    ..............................
    ..............................

    #endif


    定义一个b.h,其中包含a.h
    #ifndef _B_H_
    #define _B_H_

    #include "a.h"

    ..............................
    ..............................

    #endif

    ARM指令集中指令:

    STR R0,[R1] //[R1] <= R0

    MVN R0, #0XFF //R0 = 0XFFFFFF00 //取后面数的反码
    MVN R0,#0XA0000007 //0XA0000007的反码为0x5FFFFFF8 -> R0

    MOV R0,#1
    MOV R1,#2
    CMP R0,R1 ;若R0>R1,则置R0=3,若R0<=R1,则置R1=3
    MOVHI R0,#3 ;根据CPSR条件标志位中的HI(无符号大于)判断,若R0>R1,则R0=3
    MOVLS R1,#3 ;根据CPSR条件标志位中的LS(无符号小于或等于)判断,R0<=R1,则R1=3

    ORR R0,R0,#3 ;逻辑或运算,R0 = R0 | 3

    BIC R0,R0,#0x0B ;将R0的bit0,bit1,bit3清零,其余位不变

    跳转指令:
    B 无条件跳转
    BL 适合子程序的调转,地址有保存,可以返回
    B label PC <- label
    BL label LR <- PC-4,PC <- label

    MRS R0,CPSR ;传送CPSR的内容到R0
    MRS R1,SPSR ;传送SPSR的内容到R1

    LDR R1,=0x30003100
    LDRB R0,[R1] ;将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零
    LDRH R2,[R1] ;将存储器地址为R1的半字数据读入寄存器R2,并将R2的高16位清零

    STR R0,[R1] ;将R0中的字数据写入以R1为地址的存储器中
    STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中


    LDR R1,=0x30003100
    LDMIA R1,{R5,R6} ;R5 = [R1],R6 = [R1+4]
    MOV R2,#0x33
    MOV R3,#0X44
    STMIA R1,{R2,R3} ;[R1]=R2,[R1+4]=R2

    数据传送指令:
    MOV
    MOVS (会影响标志位)
    MVN 取反

    ADD
    SUB
    RSB Rd,Rn,R1 Rd <- R1-Rn 逆向减法

    影响标志位:
    ADC
    SBC
    RSC

    逻辑处理指令:
    AND
    ORR
    EOR 异或
    BIC 位清除指令

    比较指令:
    CMP 减法运算,结果不保存,修改标志位
    TST 位测试指令TST Rn operand 将Rn的值与operand的值按位作逻辑“与”操作,根据操作的结果更新CPSR中的相应条件标志位,当所有测试位为0时-> Z = 1
    TEQ 相等测试指令,将Rn的值与operand的值按位作逻辑“异或”操作,根据操作的结果更新CPSR中的相应条件标志位,当两个数据相等时:EQ有效,否则:NE有效

    程序状态寄存器访问指令:
    MRS 状态寄存器 -> 寄存器
    MSR 状态寄存器 <- 寄存器

    MRS R1,CPSR 将CPSR状态寄存器读取,保存到R1
    MRS CPSR,R1 R1 -> CPSR

    加载/存储指令--单寄存器加载

    LDR
    LDRB
    LDRT
    ....

    STR
    STRB
    STRT
    ....

    向后索引:LDR Rd,[Rn],#-0x04 1.Rd <- [Rn] Rn = Rn-4

    ***********************************************************************************************************************************
    ***********************************************************************************************************************************
    ***********************************************************************************************************************************
    ***********************************************************************************************************************************

  • 相关阅读:
    494 Target Sum 目标和
    493 Reverse Pairs 翻转对
    492 Construct the Rectangle 构建矩形
    491 Increasing Subsequences 递增子序列
    488 Zuma Game 祖玛游戏
    486 Predict the Winner 预测赢家
    485 Max Consecutive Ones 最大连续1的个数
    483 Smallest Good Base
    Django Form组件
    Django Auth组件
  • 原文地址:https://www.cnblogs.com/cnlg/p/4268921.html
Copyright © 2011-2022 走看看