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-常见考题和知识点的更多相关文章

  1. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  2. [原创]Java常见笔试题知识点汇总

    前天数梦工厂来学校招聘,笔试题比较有特点,全是Java题,基本就是Java的一些特点.凭记忆按照题目找到一些必备知识点 (1). try {}里有一个return语句,那么紧跟在这个try后的fina ...

  3. Salesforce Admin考题解析 | 流程自动化考题与知识点拓展

    [题目1] A record is modified on 1/1/2008. It meets criteria for a time-based workflow rule; this rule ...

  4. Java 链表常见考题总结

    首先定义自定义结点类,存储节点信息: public class Node { Node next=null; int data; public Node(int data){ this.data=da ...

  5. 常见的javascript知识点

    1.js获取标签.class.id 获取id: document.getElementById("name") 获取标签:document.getElementsByTagName ...

  6. Python语言基础考察点:python语言基础常见考题(一)

    一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转 ...

  7. 【安卓逆向】ARM常见汇编指令总结

    跳转指令 B 无条件跳转 BL 带链接的无条件跳转 BX 带状态切换的无条件跳转 BLX 带链接和状态的无条件跳转 存储器与寄存器交互数据指令(核心) 存储器:主存和内存 寄存器中放的数据:可以是字符 ...

  8. 数据库常见考题查询SQL

    1.列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 执行查询: select count(*), a.deptid from employee a groub by depti ...

  9. 常见数据结构之JavaScript实现

    常见数据结构之JavaScript实现 随着前端技术的不断发展,投入到前端开发的人数也越来越多,招聘的前端职位也越来越火,大有前几年iOS开发那阵热潮.早两年,前端找工作很少问到关于数据结构和算法的, ...

随机推荐

  1. MySQL数据分析-(3)MySQL软件的安装(Windows版)

    (一)MySQL下载 进入https://www.mysql.com/网页,找到DOWNLOADS然后点击进入页面,在页面中,我们选择社区版Community 点击,选择MySQL Community ...

  2. fatal: unable to access 'https://github.com/Homebrew/brew/'

    最近安装 Homebrew 遇到的坑,总结一下. 我的 Mac 版本是 10.13.6. 首先安装 Homebrew /usr/bin/ruby -e "$(curl -fsSL https ...

  3. vmware压缩vmdk文件大小

    在搭建靶机环境的过程中总是遇见vmdk越来越大,导致上传时间变长.记一下压缩vmdk的方法 ;sync;rm -f zero.fill /usr/bin/vmware-toolbox-cmd disk ...

  4. arcpy 获得是否为布局mxd.activeView

    arcpy 获得是否为布局mxd.activeView print mxd.activeView PAGE_LAYOUT mxd.pageSizePageSize(width=21.590043180 ...

  5. docker安装mysql挂载外部配置和数据目录

    从docker hub上可以找到mysql外挂配置和数据目录的一些文档说明 https://hub.docker.com/_/mysql 从该文档中可以了解到,mysql的默认配置为/etc/mysq ...

  6. JAVA通过FTP方式向远程服务器或者客户端上传、下载文件,以及删除FTP服务器上的文件

    1.在目标服务器上搭建FTP服务器 搭建方式有多种大家可以自行选择,例如使用Serv-U或者FTPServer.exe:这里我以FTPServer.exe为例搭建:在目标服务器(这里对应的IP是10. ...

  7. C++ remove remove_if erase

    #include <iostream>#include <algorithm>#include <list>#include <vector>#incl ...

  8. Ideal常用 快捷键

    IntelliJ Idea 常用快捷键列表   Alt+回车 导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导 ...

  9. SaaS领域如何分析收入增长?

    SaaS领域如何分析收入增长? 今天我们试着将其模式运用到收入增长上进行分析.这对常规收入的计算会极有帮助,例如企业级应用软件(SaaS)或消费者订阅业务. 列举某公司通过月度订阅获得营收为例,为了更 ...

  10. swift 第十一课 结构体定义model类

    结构体是可以作为 model 类使用的不过也要 写下的创建方法 import UIKit/***创建一个model 结构,重写init 方法,结构体的属性不能出现可选类型**/ struct Mode ...