ARM初识
来源:互联网 发布:如何读取股票数据 编辑:程序博客网 时间:2024/06/07 01:02
ARM初识
ARM
指令集为精简指令集(指令长度为2或4) X86
指令集为复杂指令集(指令长度可变)
Thumb
: 16位指令,长度为2字节
ARM
: 32位指令,长度为4字节
数据类型
Byte
8Bits HalfWord
16Bits Word
32Bits DWord
64BitsARM工作模式(7种)
用户模式(1种), 系统模式(5种), 未定义模式(1种)
寄存器介绍(R3模式)
共37个可访问寄存器(31个通用寄存器,6个状态寄存器)
R0
~R12
为通用寄存器
R11
通用寄存器(FP),一般做栈底,方便栈变量和参数的寻址 R13
堆栈指针(SP),即栈顶 R14
链接寄存器(LR), 用处为保存函数调用的返回地址 R15
程序计数器(PC),即当前执行指令的下一条指令的下一条指令的地址 CPSR
状态寄存器状态寄存器:
Thumb
模式,指令为2字节, 为0则为ARM
模式,指令4字节) 6,7位 I/F位, 用于屏蔽中断 ,当I位为1时,IRQ中断被禁止;当F位为1时,FIQ中断被禁止 8~27位 保留字段 28位 V位, 溢出标志位 , 当该位为1时:使用加法/减法运算时,表示有符号溢出;否则V=0 29位 C位, 进位标志位,当该位为1时:若为加法运算(含CMN)表示产生进位,否则C=0 30位 Z位, 零标志位 当该位为1时:表示两数相等。为0时:表示两数不相等 31位 N位, 符号位, 当该位为1时:表示负数。为0时:表示正数bl
: 相当于X86的CALL
, 调用导入函数使用(PLT) 标明函数重定位
功能为:流程转移到指定地址,然后返回地址入R14(LR)
寄存器, 可直接调用库函数
ARM
的函数调用:前四个参数 分别传入R0~R3, 其余参数入栈
当子函数中再次发生函数调用时, 则给R14(LR)
寄存器的值入栈
注意:
ARM
的mov
指令不支持操作内存
GNU
的AS
功能
用于编译
.s
文件为ARM
指令程序
手工编译ARM
程序
as -e SrcNmae.c -o SrcNmae.i //预编译处理文件 .Ias -s SrcNmae.i -o SrcNmae.s //ASM文件 .sas -c SrcNmae.s -o SrcNmae.o //编译中间文件 .o(OBJ)gcc LIB SrcNmae.o -o SrcNmae //链接库文件
ARM的ASM伪指令
Tips:
JAVA
没有运算符重载语法, 单独给String类提供一个重载语法特例
data/system/packet.xml
此文件保存系统中所有的APP
的权限
Android.os.Debug.waitForDebugger()
等待调试器加载,一般写在SO
的OnLoad
中
0 0
- 初识ARM
- ARM初识
- 初识ARM
- 初识arm
- ARM汇编初识
- ARM初识(一)
- 【ARM】初识ARM——硬件理论基础
- 初识ARM cotex—A9
- GD32F130FXP6学习笔记三:ARM的GPIO初识
- GD32F130FXP6学习笔记四:ARM 汇编指令集初识
- 初识
- 初识
- 初识
- ARM架构与体系学习(一)——初识启动文件
- arm
- ARM
- ARM
- ARM
- 如何构建自己的笔记系统?
- spring注解使用不当产生的一个Bug
- SYD8801低功耗【深度睡眠模式】【浅度睡眠模式】【进入睡眠模式后要等待硬件进入睡眠】【内部上拉电阻对功耗的影响】【测试低功耗步骤】
- 微软工程师:构建强大的实时流式应用选择Apache Calcite
- scala常用collection总结
- ARM初识
- 动态规划—04公共子序列
- 【jzoj5069】【GDSOI2017第二轮模拟】【蛋糕】【莫比乌斯反演】【杜教筛】
- 自定义水波纹加载进度动画--葫芦
- (GIS可视化)热力图
- IntelliJ IDEA 搭建SSH框架详细步骤
- 线性代数-Gilbert Strang(第二部分)
- 腾讯课堂之Vue 学习
- 《算法导论》BFS和DFS实现