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

ARM《2》_ARM的GNU汇编语言

0、前言:

  • 这部分笔记就会比较简陋一些,先实现功能,后面有时间再深究原理

1、arm指令环境配置:

1.1、安装:ARM工具链

  • 名称:arm-none-linux-gnueabi
  • 作用:
  • 安装说明:在安装arm-2011.09-70-arm-none-linux-gnueabi.exe时,先设置属性——兼容性——以win7兼容模式运行;
  • 安装说明:安装设置中选择type模式,在安装路径设置中不要出现空格和中文,设置为环境变量时选择为所有用户设置环境变量,图标路径和安装路径一致,预览之后,install即可;

1.2、安装芯片扩展包【MDK79525.exe】

1.3、新建keil项目,配置项目环境

  • 在keil中新建项目,芯片选择Samsung的S3C2410A,在弹出框中,选择不复制S3C2410A到项目路径。在工程目录下,创建一个start.S文件。右击keil中的项目文件夹,添加start.S到项目中,配置keil中arm汇编的编译工具为GNU for ARM,路径就是刚才安装的arm的路径,在keil中配置链接器脚本文件(下文会做说明);

1.4、测试环境

  • 在start.S中写入

.global _start
.text
_start:
mov r0,#3
mov r1,r0
.end

  • 用keil编译不报错,则环境配置正确。

2、基础知识:

2.1、CPU工作流程

  • CPU的核心是控制单元、运算单元、存储单元
    在这里插入图片描述

2.1、add_ARM的CPU执行指令的流程:

  • 取指令——译码——执行指令——修改指令计数器指向下一条指令;
    • 取指令:CPU控制器从内存中读取一条指令并放入到指令寄存器中。
    • 指令译码:指令寄存器中的指令经过译码,决定该指令进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。
    • 执行指令:分两个阶段,取操作数和进行运算。
    • 修改指令计数器:指令计数器指向下一条指令的地址。

2.2、汇编语言的本质:

  • 汇编语言实质是 机器指令 (机器码)的助记符,是一种低级的符号语言;
  • 每一款cpu都有属于自己的汇编语言,arm的汇编语言有两种,一种是arm官方的,一种是gun组织的;
  • 越高级的语言越人性化,汇编就是一种人性化很差的语言;

2.3、CISC体系和RISC体系:

  • CISC:Complex instruction set computer,复杂指令集,这个体系的设计理念就是用丰富的指令来满足各种运算任务,CISC 类型的 CPU内部工艺复杂,功耗高,好处是汇编好写;
  • RISC: Reduced instruction set computer,精简指令集,这个体系提供指令较少,CPU工艺简单,编程就比较复杂了【例如:ARM体系的CPU,常用指令只有30个】
  • CPU发展方向:从CISC——RISC——两者结合;

2.4、统一编址和独立编址

  • CPU访问各种外设有2种方式:一种是类似于访问内存的 方式,即把外设的寄存器当作一个内存地址来读写,从而用与访问内存相同的方式来操作外部设备,这种方式叫做IO与内存统一编址方式;另一种是使用专用的CPU指令来访问某种特定外设,这种方式叫做IO与内存独立编址
  • 统一编址:就是内存和外设的地址划分在了同一个地址范围内来规划,被外设占用了的地址就不能给内存了,反之给内存占用了的地址范围就不能给外设了,比如给外设分配的地址范围为0 ~ N,那么内存就不能用0 ~ N了,只能用N+1 ~ M。【假如CPU一共16根总线,内存用8根,剩下8根,摄像头用4根,触摸板用4根】
  • 独立编址:内存和外设分开独立编址(它们的地址原则上有可以重合区域),因为独立,所以内存可以从0 ~ N,外设的地址范围也可以从0 ~ N。【假如CPU有16根总线,就得设计两套电路系统,内存用16根,外设用16根】

2.5、IO

http://www.dtcms.com/a/519388.html

相关文章:

  • 02_svm_多分类
  • 全面的 C#/.NET 图表构建解决方案
  • 未发表,三大创新!OCSSA-VMD-Transformer-Adaboost特征提取+编码器+集成学习轴承故障诊断
  • Linux网络HTTP(下)(9)
  • 网站权重值在较长时间内是一定的页面优化怎么做批量的网站检查
  • 从“手动填”到“自动识”:营业执照识别技术革新政务体验
  • ArkUI-X跨平台开发之环境搭建
  • 第六部分:VTK进阶(第170章 MPI 分布式渲染与数据并行)
  • 【GESP】C++四级真题 luogu-B4264 [GESP202503 四级] 二阶矩阵
  • Metasploit+Ngrok快速获取Windows Shell
  • 网站 需求文档最近中文字幕视频2019一页
  • Elasticsearch从入门到进阶——搜索引擎原理
  • 【HarmonyOS 6 特别发布】鸿蒙 6 正式登场:功能升级,构建跨设备安全流畅新生态
  • 【论文精读】AIGCBench:AI 图像生成视频(I2V)的全面评估基准
  • 电子病历语料库构建方法与架构项目全计划(2025扩展版)
  • 刷题网站开发19年做网站
  • 网站建设销售外贸企业网站功能要求
  • 设计神经网络的技巧
  • Java 核心知识点查漏补缺(二)
  • wpf之数据类型转换
  • SpringBoot-Web开发之拦截器
  • 计算机网络:网络基础
  • C++学习——类与对象详细知识点总结
  • C primer plus (第六版)第十一章 编程练习第14题
  • 逆变器之逆变原理
  • PLL说明,quartus和vivado两款软件的pll IP核使用说明
  • Redis全解析:性能、类型与淘汰策略
  • 行业的年龄焦虑本质是“价值重构危机“
  • 自己建的网站无法打开晋城网站制作公司
  • InstructBLIP:迈向通用视觉-语言模型的新里程碑