当前位置: 首页 > news >正文

linux 硬件 arm架构 汇编语言

1.cortex
       1. Cortex-A 低功耗 消费类
ARM Cortex-A 系列处理器是一种广泛应用于 移动设备、嵌入式系统和物联网的高效能处理器,因其低功耗和高性能的特点而受到青睐。
       2. Cortex-R 实时性
Cortex-R处理器针对高性能实时应用,例如硬盘控制器(或固态驱动控制器)、企业中的网络设备和打印机、消费电子设备(例如 蓝光播放器和媒体播放器)、以及汽车应用(例如安全气囊、制动系统和发动机管理)。
        3.Cortex-M 高性能,偏控制
        面向各类嵌入式应用的 微控制器内核
2.ARM9
        指令集架构(版本): armV4
         程序执行的过程: 预取 译码 执行
3.处理器工作模式
        1.User:非特权模式,大部分任务执行在这种模式    用户模式
        2.FIQ:当一个高优先级(fast)中断产生时会进入这种模式。 快中断
        3.IRQ:当一个低优先级(normal)中断产生时会进入这种模式。 慢中断
        4.Supervisor:当复位或软中断指令执行时会进入这种模式。 SVC模式  管理模式
        5.Abort:当存取异常时将会进入这种模式。 中止模式
        6.Undef:当执行未定义指令时会进入这种模式。 未定义
        7.System:使用和User模式相同寄存器集的特权模式。 系统模式
        Cortex-A特有模式
                Monitor:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式。                                                                                                                                          监护模式
4.CPSR 程序状态寄存器
        条件位:
                 N = Negative result from ALU
                 Z = Zero result from ALU
                 C = ALU operation Carried out or borrow
                 V = ALU operation oVerflowed
        Q 位:
                仅ARM v5TE-J架构支持
                指示饱和状态
        J
                仅ARM v5TE-J架构支持
                  T=0;J = 1 处理器处于 Jazelle 状态
                也可以和其他位组合
        DNM Do Not Modify
                GE[3:0] 大于或等于( 当执行 SIMD 指令时有效 )
                IT[7:2] IF….THEN….指令执行状态位
        E 位: 大小端控制位
        A位: A=1 禁止不精确的数据异常
        中断禁止位:
                I = 1: 禁止 IRQ.
                F = 1: 禁止 FIQ
        T Bit
                T = 0;J=0; 处理器处于 ARM 状态
                T = 1;J=0 处理器处于 Thumb 状态
                T = 1;J=1 处理器处于 ThumbEE 状态
        Mode 位:
                处理器模式位
                00000 User mode; 10001 FIQ mode; 10011 SVC mode;
                10111 Abort mode; 11011 Undfined mode; 11111 System;
                10110 Monitor mode;10010 IRQ
5.异常处理
        当异常产生时, ARM core:
                拷贝 CPSR 到 SPSR_<mode>
                设置适当的 CPSR 位:
                        改变处理器状态进入 ARM 态
                        改变处理器模式进入相应的异常模式
                        设置中断禁止位禁止相应中断 (如果需要)
                保存返回地址到 LR_<mode>
                设置 PC 为相应的异常向量
        返回时, 异常处理需要:
                从 SPSR_<mode>恢复 CPSR
                从LR_<mode>恢复 PC
                Note:这些操作只能在 ARM 态执行
6.ARM汇编语言程序格式      
        ARM汇编语言是以 (section) 为单位来组织源文件的。段是相对独立
的、具有特定名称的、不可分割的指令或者数据序列。
        段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代
码运行时需要用到的数据。一个 ARM 源程序至少需要一个代码段,大的程
序可以包含多个代码段和数据段。
        ARM指令集可以分为六大类
                1.分别为数据处理指令 ( 完成 CPU 内部的计算)
                2. Load/Store指令 ( 完成 CPU 与内存 IO 外设之间的数据传输)
                3. 跳转指令 ( 完成程序的跳转)
                4. 程序状态寄存器处理指令 ( 完成 CPSR 的管理 )
                5. 协处理器指令 ( 完成 CPU 扩展功能的实现 )
                6. 异常产生指令 ( 用户程序异常触发 )
        函数传参规则:
                4个以内:r0~r3
                大于4个的使用栈传递
                返回值: r0
         立即数: 一个数(或其按位取反后)循环右移偶数位后所有的1能放进低8位中
	preserve8area reset, code, readonlycode32entrystartldr sp, =0x40001000mov r0, #1mov r1, #2mov r2, #3mov r3, #4import c_addbl c_addnopb startexport asm_add
asm_addstmfd sp!, {r4-r12, lr}   ; 保护现场add r0, r0, r1ldmfd sp!, {r4-r12, pc}   ; 恢复现场end

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 步进电机相关
  • erlang学习:用OTP构建系统23.12练习题
  • day-48 分割回文串
  • 1037 计算数列和
  • tcp如何保证可靠性传输
  • 保研考研机试攻略(满分篇):第一章——技巧之巅(2)
  • linux进程处理
  • Shader学习笔记
  • C#中的Array.Sort()和Reverse()
  • JAVA-JVM 内存模型类加载器GC算法GC调优
  • 【技巧】Excel检查单元格的值是否在另一列中
  • LuaJit分析(一)LuaJit交叉编译
  • 今日算法:蓝桥杯基础题之“切面条”
  • VS2022出现C1001内部编译器错误的情况分析
  • 性能测试⼯具-——JMeter
  • [译]CSS 居中(Center)方法大合集
  • Angular数据绑定机制
  • Apache的基本使用
  • ECS应用管理最佳实践
  • Github访问慢解决办法
  • Java深入 - 深入理解Java集合
  • Js基础知识(四) - js运行原理与机制
  • Linux各目录及每个目录的详细介绍
  • MySQL数据库运维之数据恢复
  • PaddlePaddle-GitHub的正确打开姿势
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 测试如何在敏捷团队中工作?
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 全栈开发——Linux
  • 如何解决微信端直接跳WAP端
  • 如何优雅地使用 Sublime Text
  • 深入浅出webpack学习(1)--核心概念
  • 携程小程序初体验
  • 学习Vue.js的五个小例子
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #14vue3生成表单并跳转到外部地址的方式
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (备份) esp32 GPIO
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十)c52学习之旅-定时器实验
  • (小白学Java)Java简介和基本配置
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .net core控制台应用程序初识
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net下简单快捷的数值高低位切换
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .skip() 和 .only() 的使用
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @hook扩展分析
  • @PreAuthorize注解
  • [2669]2-2 Time类的定义