arm体系结构编程

  • 1 基本概念
  • 2 ARM编程模型
    • 2.1 工作模式
    • 2.2 工作状态
    • 2.3 寄存器组织结构
      • 2.3.1 和特殊功能寄存器的区别
      • 2.3.2 arm寄存器个数

1 基本概念

RISC,精简指令集 arm
CISC,复杂指令集 intel

指令集 架构 SOC
armv4t ARM7 S3C44B0 之前都是三级流水线
ARMV5TE ARM9 s3c2410/s3c2440
ARMV6 ARM11 s3c6410
ARMV7 cortex-A s5pv210
R系列
M系列
ARMV8 A53 s5p6818

cortex-A: 高大尚领域 多媒体数据的处理
cortex-R: 高实时领域
cortex-M: 以单片机的价格实现32bit运算能力 stm32
老产品的升级改造,全新产品的研发

三级流水线:取指令 解码指令 执行指令

arm7 ,三级流水线
arm9, 五级流水线

2 ARM编程模型

2.1 工作模式

  SVC(管理模式)  系统上电/执行了软中断指令FIQ(快速中断模式) 发生了高优先级中断IRQ(中断模式)  发生了低优先级中断ABORT(中止模式) 产生了非法的存储器访问UNDEF(未定义模式) 执行到不认识的指令SYSTEM(系统模式)USER(用户模式) 对应了用户态前5种称作异常工作模式前6种称作特权工作模式

2.2 工作状态

有2种工作状态
arm状态: 执行arm(32bit)指令时,每条指令32bit位
可通过反汇编获得汇编代码:arm-cortex_a9-linux-gnueabi-objdump -S shell >1.asm

thumb状态:执行thumb(16bit)指令时,thumb指令占据存储空间小,但是代码执行效率低 。

arm工作状态和thumb工作状态可以相互切换,但是异常处理过程必须处于ARM工作状态 ,因为异常处理有时序要求,必须快速处理
arm指令代码执行效率高(指令占用空间大,效率高,空间换时间)

2.3 寄存器组织结构

2.3.1 和特殊功能寄存器的区别

arm寄存器与我们常说的特殊功能寄存器不同
1)所在的位置不同
寄存器位于ARM core中
特殊功能寄存器位于s5p6818
2) 访问方式不同
特殊功能寄存器都有特定的物理地址
寄存器只有名字没有地址 很难用C语言访问的
3)作用不同
特殊功能寄存器是软件控制硬件的媒介
寄存器…

2.3.2 arm寄存器个数

arm中有37个32bit的寄存器,其中有31个通用寄存器 r0 r1 r2 …r15(有重名的)
其中有31个通用寄存器 r0 r1 r2 …r15(有重名的)

            r11(fp .....)  r13(sp 栈指针寄存器,c语言中常说的栈)r14(lr 保存函数的返回地址)r15(pc 保存取指令的地址)  有6个状态寄存器1个程序状态寄存器 cpsr[4:0] mode 当前arm处于哪种工作模式[5]   T   =1,处于THUMB工作状态=0,处于ARM工作状态[6]   F   =1, 屏蔽FIQ=0,使能FIQ[7]   I   =1, 屏蔽IRQ=0,使能IRQ[28]  V   overflow, 带符号数据运算最高位是否溢出(忽略)[29]  C   carry    =1, 最高位有进位0xfffffffc + 8   C会被置10xfc + 8    C=0 [30]  Z   zero     =1, 运算结果为0=0,运算结果为非0[31]  N   negative =1, 运算结果为负数=0,运算结果非负5个状态寄存器 spsr,作为cpsr的备份寄存器 每种工作模式下只能访问其中一个子集

arm体系结构编程-入门介绍相关推荐

  1. pythonguitkinter编程入门_Python Tkinter GUI编程入门介绍

    一.Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口.Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个 ...

  2. TM4C123系列ARM单片机开发入门介绍

    初学TM4C123GH6PZ,以前未接触过ARM,所以感觉一头雾水.根据自己以前C51的简单经验,对照资料很少的ARM4教程,摸索着终于明白了开发流程,从软件到硬件用自己的程序点亮了LED.现将自己的 ...

  3. 【嵌入式系统开发05】ARM汇编语言编程入门实践

    本文目的是主要介绍如何搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写.记录build生成的 hex文件各段的大小,了解Hex文件格式及其前8个字节内容含义,学习在没有硬件条件下 ...

  4. python3.6 messagebox_Python Tkinter GUI编程入门介绍

    一.Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口.Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个 ...

  5. ARM汇编语言编程入门实践

    文章目录 一.keil的安装 二.安装stm32 pack 三.keil 的简单设置 四.基于STM32汇编程序的编写 4.1 新建工程 4.2 新建test.s文件 4.3 编译程序 4.4 分析H ...

  6. 利用keil完成ARM汇编语言编程入门实践

    文章目录 一.安装keil软件 1.下载安装包 2.安装keil 3.安装stm32 pack 二.简单的stm汇编语言的编程 1.新建工程项目 2.新建main.c文件 3.编译 4.stm32仿真 ...

  7. python在哪里写编程_Python编程入门介绍

    编程-就是让计算机代为解决某个问题,对某个计算体系规定一定的计算方式,使计算体系按照计算方式运行,并最重得到结果的过程. 编程的语言有很多种,比如Python,JAVA,JavaScript,c++, ...

  8. 搭建Keil编程环境,ARM汇编语言编程入门实践

    多看多学 一.安装及配置环境 01 型号分类及缩写 02 资料共享 03 安装器件支持包 04 Keil简单设置 二.简单程序编译 01 新建工程 02 配置环境 03 添加源文件 04 设置仿真器模 ...

  9. 非阻塞模式WinSock编程入门(Socket关联窗口消息机制)

    本文版权归 CSDN trcj 所有,转载请自觉按如下方式于明显位置标明原作者及出处,以示尊重! 作者:trcj 原文:http://blog.csdn.net/trcj1/archive/2010/ ...

  10. Android 4编程入门经典—开发智能手机与平板电脑应用

    Android 4编程入门经典 书名: Android 4编程入门经典 原书名: Beginning  Android 4 Application Development 重点指数 畅销书 作者: ( ...

最新文章

  1. GridView导出到Excel或Word文件
  2. jQuery.validator.addClassRules()添加指定class的表单验证规则
  3. Struts 2基础
  4. ant target间的dependency
  5. Spring的@Transactional注解踩坑
  6. arm-none-eabi-gcc.exe -v
  7. Mongodb 学习
  8. Windows域控统一设置客户端桌面壁纸【全域策略生效】
  9. pip常用指令及numpy安装
  10. 轻仓的贵金属白银今日走势分析
  11. java 标点符号_java的标点符号
  12. Oracle Database-基础及查询部分
  13. 互联网日报 | 腾讯地图上线聚合打车服务;瑞幸咖啡等公司被罚6100万元;中通快递下周二香港上市...
  14. 机器人足球仿真中的三角进攻算法研究
  15. 解决:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING
  16. swiper h5学习
  17. android极光推送声音,【极光推送】iOS APNS 自定义铃声
  18. 云和恩墨创始人盖国强:在变与不变当中 见证行业从一枝独秀到百花齐放
  19. 子进程、僵尸进程、孤儿进程(个人总结)
  20. MyBatis——insert语句

热门文章

  1. Centos8下修改ssh端口号
  2. MDUI中Select初始化问题
  3. JS生成二维码,以下介绍3种方法
  4. 22道接口测试面试题答案。
  5. php 实现rpc,使用php链接jsonrpc服务
  6. centeros安装mySQL
  7. 轻量级cad绘图工具FoxCAD for mac
  8. mac安装win7之后鼠标失灵_mac安装win7鼠标失灵怎么办
  9. python无头浏览器兼容问题_docker+python无头浏览器爬虫
  10. 状态压缩DP 图文详解(一)