ARM-常见考题和知识点
1. ARMv7 7中状态,ARMv8对应的状态
2. TEE知识
3. ARM寄存器及作用
4. ARM内部总线AHB APB
5.
1. Thumb | Arm指令区别
编写Thumb指令时,先要使用伪指令CODE16声明,而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,可使用伪指令CODE32声明。
ARM指令是32位的,而Thumb指令时16位的,如果在1K的存储空间中,可以放32条ARM指令,就可以放64条Thumb指令,因此在存放Thunb指令时,代码密度高。
Thumb指令集没有协处理器指令、信号量指令以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;除了跳转指令B有条件执行功能外,其他指令均为无条件执行;
大多数Thumb数据处理指令采用2地址格式。Thumb指令集与ARM指令集的区别一般有如下几点:
Ø 跳转指令
程序相对转移,特别是条件跳转与ARM代码下的跳转相比,在范围上有更多的限制,转向子程序是无条件的转移。
Ø 数据处理指令
数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第三个寄存器中。
数据处理操作比ARM状态的更少,访问寄存器R8—R15受到一定限制。
(除MOV和ADD指令访问寄存器R8—R15外,其他数据处理指令总是更新CPSR中ALU状态标志)
访问寄存器R8—R15的Thumb数据处理指令不能更新CPSR中的ALU状态标志
Ø 单寄存器加载和存储指令
在Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0—R7
Ø 批量寄存器加载和存储指令
LDM和STM指令可以将任何范围为R0——R7的寄存器子集加载或存储
https://blog.csdn.net/ly930156123/article/details/79219303
两种状态:arm/thumb , bx跳转, CODE16/CODE32代码区分,Rn的bit0=1 thumb指令,bit0=0 arm指令
2. ARM寄存器和功能介绍 https://blog.csdn.net/lb920519/article/details/80065102
3. SIMD(Single Instruction Multiple Data 单指令多重数据)指令集,进阶SIMD叫NEON指令集(语音和视频指令)
4. ARMv8: https://blog.csdn.net/forever_2015/article/details/50285865
http://www.wowotech.net/armv8a_arch/armv8-a_overview.html
https://blog.csdn.net/zsc09_leaf/article/details/45825015
5. MMU TTB TLB:https://blog.csdn.net/chenchengwudi/article/details/80874240
6. WFI(wait for interrupt) WFE(wait for event先看看有没有event 有则返回,没有则wfi), 一般用wfi
7. http://www.sohu.com/a/118492476_464086 ***
https://blog.csdn.net/edwardlulinux/article/details/9261393
https://blog.csdn.net/mr_raptor/article/details/6556172
https://www.cnblogs.com/douzi2/p/5112743.html
8. wakelock: https://www.jianshu.com/p/67ccdac38271*** https://www.cnblogs.com/rzq232/p/3835892.html
9. 基本知识
ARM 7种状态 sys svc user FIQ IRQ Abort undefine
ARMv8 ARM64 Exception Levels(EL0(APP)~EL3(TrustZone))
SIMD(Single Instruction Multiple Data 单指令多重数据)指令集,进阶SIMD叫NEON指令集(VADD v开头,语音和视频指令)
EL0(app) | Secure firmwire
普通用户应用程序。 EL0对应于最低特权级别,通常被描述为非特权级别,而在EL0之上的任何异常级别执行的通常被称为特权执行。
EL1(Guest OS) | (Trusted OS)
操作系统内核。通常被描述为特权。
EL2 | --
虚拟机管理程序(Hypervisor)。
EL3 (Secure monitor)
低级固件,包括安全监视器等。 tee(secure world | Normal world) AArch64模式下CPU的通用寄存器是64bit,但A64指令同时支持对64bit, 32bit, 16bit, 8bit数据类型的读写操作。linux下一般用LP64。
TYPE LP32 ILP32 LP64 ILP64 LLP64
CHAR
SHORT
INT
LONG
LONG LONG
POINTER 汇编指令B,BL,BX,BLX 和 BXJ的区别:
、B------跳转指令
跳转指令B使程序跳转到指定的地址执行程序。
例:B 0x1234 ;跳转到绝对地址0x1234处。
、BL-----带返回的连接跳转
BL指令用于实现子程序调用。子程序的返回可通过将LR寄存器的值复制到PC寄存器来实现。下面的指令可实现子程序返回:()、BX R14 ()、MOV PC,R14
例:BL func ;跳转到子程序func处执行,同时将当前pc值保存到LR中。
、BX------跳转并切换状态
带状态切换的跳转指令BX使程序跳转到指令中指定的参数Rm指定的地址执行程序。若 Rm 的 bit[] 为1,切换到 Thumb 指令执行;若 Rm 的 bit[] 为0,切换到 ARM 指令执行。
指令的语法格式:BX{<cond>} <Rm>
例:BX R0 ;跳转到R0中的地址,如果R0[]=,则进入Thumb状态。
、BLX------带返回的跳转并切换状态
该指令为无条件执行指令。
跳转、带链接跳转、跳转并切换指令集(thumb arm)、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态
BL: 指令存储返回地址到LR, 我理解是子函数调用需要用这个,B跳过去之后就去那边执行了不在回到现在这个地方
ARM-常见考题和知识点的更多相关文章
- IOS学习笔记48--一些常见的IOS知识点+面试题
IOS学习笔记48--一些常见的IOS知识点+面试题 1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...
- [原创]Java常见笔试题知识点汇总
前天数梦工厂来学校招聘,笔试题比较有特点,全是Java题,基本就是Java的一些特点.凭记忆按照题目找到一些必备知识点 (1). try {}里有一个return语句,那么紧跟在这个try后的fina ...
- Salesforce Admin考题解析 | 流程自动化考题与知识点拓展
[题目1] A record is modified on 1/1/2008. It meets criteria for a time-based workflow rule; this rule ...
- Java 链表常见考题总结
首先定义自定义结点类,存储节点信息: public class Node { Node next=null; int data; public Node(int data){ this.data=da ...
- 常见的javascript知识点
1.js获取标签.class.id 获取id: document.getElementById("name") 获取标签:document.getElementsByTagName ...
- Python语言基础考察点:python语言基础常见考题(一)
一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转 ...
- 【安卓逆向】ARM常见汇编指令总结
跳转指令 B 无条件跳转 BL 带链接的无条件跳转 BX 带状态切换的无条件跳转 BLX 带链接和状态的无条件跳转 存储器与寄存器交互数据指令(核心) 存储器:主存和内存 寄存器中放的数据:可以是字符 ...
- 数据库常见考题查询SQL
1.列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 执行查询: select count(*), a.deptid from employee a groub by depti ...
- 常见数据结构之JavaScript实现
常见数据结构之JavaScript实现 随着前端技术的不断发展,投入到前端开发的人数也越来越多,招聘的前端职位也越来越火,大有前几年iOS开发那阵热潮.早两年,前端找工作很少问到关于数据结构和算法的, ...
随机推荐
- ECMAScript 5.0 基础语法(上)
银子: 一般来说,一门编程语言的基础语法都是大同小异的.比如,python的基础语法,包括:数据类型,变量,作用域,运算符,流程控制(if...else...语句),循环,编码,数据类型的操作(增删改 ...
- 自制 yum 源仓库
转自:https://www.cnblogs.com/marility/p/7278374.html 背景 客户服务器为内网机器,centos7系统,且无法与外网连接.需要部署对应的LANMP环境及其 ...
- el-form 表单校验
<el-form ref="dataForm" :model="dataForm" :rules="rules" label-widt ...
- 二十、网络ifconfig 、ip 、netstat、ss之二
ip 网络层协议 ip地址 点分十进制分为4段,范围 0-255 ip分类 A 占据1段,最左侧一段第一位固定为0 0 000 0000 - 0 111 1111 0 - 127:其中0为网络,12 ...
- MYSQL的两种存储引擎区别
Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...
- Java并发指南13:Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 转自https://www.javadoop.com/post/hashmap#toc7 部分内容转自 http: ...
- Change Assembly Version in a compiled .NET assembly
Change Assembly Version in a compiled .NET assembly You can use ILMerge: ILMerge.exe Foo.dll /ver:1. ...
- based on Greenlets (via Eventlet and Gevent) fork 孙子worker 比较
Design — Gunicorn 19.9.0 documentationhttp://docs.gunicorn.org/en/stable/design.html#async-workers e ...
- C之函数返回一个以上的值
#include<stdio.h> #include<stdlib.h> //函数的返回值不能是数组 void add(int* a,int* b){ *a += 10; *b ...
- 数据分析 - sql 业务相关练习题
数据库 userinfo , orderinfo 表 两个 userId 彼此对应 题目 解题 不同月份的下单人数 用户在同一个月份会下多个单,这里进行去重 未支付的脏数据去除 统计用户三月份的 ...