头文件定义和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
***********************************************************************************************************************************
***********************************************************************************************************************************
***********************************************************************************************************************************
***********************************************************************************************************************************
头文件定义和ARM指令的更多相关文章
- 常用ARM指令
常用ARM指令1:数据处理指令 mov mvn MOV(MOVE)指令可完成从另一个寄存器.被移位的寄存器或将一个立即数加载到目的寄存器 MOV R0,R1;R1的值传到R0 MOV R3,#3 ...
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- ARM指令教程
ARM指令教程 ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理 ...
- ARM指令分类及其寻址方式
ARM指令分类及其寻址方式 一:ARM指令的分类 ARM指令集可以分为以下6类: •跳转指令: •数据处理指令: •程序状态寄存器(PSR)传输指令: •load/store指令: •协处理器指令: ...
- ARM指令
语法格式 <opcode>{<cond>}{S} <Rd>, <Rn>,<shifter_operand> {}表示是可选的部分,<& ...
- ARM指令学习,王明学learn
ARM指令学习 一.算数和逻辑指令 1— MOV 数据传送指令 2.— MVN 数据取反传送指令 3.— CMP 比较指令 4.— CMN 反值比较指令 5.— TST 位测试 ...
- [置顶] ARM指令集和常用寄存器
1) ARM指令集 32位的 ARM指令和 16位 的Thumb指令 1,寄存器寻址 MOV R1, R2 //将寄存器R2的值传给寄存器R1 2,立即寻址 MOV R0, #0XFF00 //数据 ...
- ARM指令和Thumb指令区别
Thumb指令集 ]的问题而提出的,它具有16为的代码密度.Thumb不是一个完整的体系结构,不能指望处理程序只执行Thumb指令而不支持ARM指令集.因此,Thumb指令只需要支持通用功能,必要时, ...
- C/C++:多个.cpp文件包括同一个.h头文件定义方法
本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文 ...
随机推荐
- 采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中
1. 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件. 2. SQL脚本(MID_DFDZ.ctl) LOAD DATA INTO TABL ...
- Java JDK的安装以及环境变量的配置
安装并配置完Android SDK之后,本想着可以做个简单的APP应用了,只是依然提示我“请确认Java JDK是否安装”类似的报错,于是又进行了Java JDK的安装以及环境变量的配置. 1.下载地 ...
- 修改weblogic部署的应用名称
通过weblogic管理后台console进行发布本地项目的时候,它会默认以WEB-INF的上一级目录作为访问路径,如,假如你的项目WEB-INF目录的上一层是WebRoot,那么发布后,访问的路径默 ...
- Loadrunner 使用检查点
在使用loadrunner 测试时,比如我们在登陆时,我们希望说登录是否成功.这个时候我可以使用检查点函数. 检查登录后,页面上是否返回了某个标识,这样我们可以根据标识判断登录事务是否成功. 现在 ...
- event.srcElement在火狐(FireFox)下的兼容问题。搜索框获得焦点时默认文字变化
前言: 项目中用到了一个功能,搜索框里有默认的文字,当搜索框获得焦点时里面的默认文字消失,如果失去焦点时搜索框内容为空则让里面的内容回复默认!,. 实现: 很轻松的在网上找到了类似代码 $(" ...
- cf731E
题意:一个游戏,由n张贴纸组成.贴纸排成一排,并且纸条上标有数字,玩家轮流揭下m张从左到右连续的纸条(m大等2),揭下后玩家得分累加这些纸条的sum,并且在剩下纸条最左边贴上新的纸条,数值为揭下纸条的 ...
- 转: 详解css中的display属性
在一般的CSS布局制作时候,我们常常会用到display对应值有block.none.inline这三个值.下面我们来分别来认识和学习什么时候用什么值.这里通过CSS display知识加实例讲解方法 ...
- appjs desktop2
var express = require('express');var path = require('path');var favicon = require('serve-favicon');v ...
- Python的排序
1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a','have','I' ...
- [开发笔记]-“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
这两天在做一个需要将wps文档转换成word文档的程序,在调用wps的com组件时项目编译是没有问题的,但当运行的时候却弹出了下面的错误提示: 从网上百度一番后,找到了正确的解决方法. 先从Com组件 ...