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

ARM裸机-5

1、可编程器件的编程原理

1.1、电子器件的发展方向

        模拟器件-->数字器件

        ASIC-->可编程器件

1.2、可编程器件的特点

        CPU在固定频率的时钟控制下节奏运行。

        CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行。

        这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集。

1.3、整个编程及运行过程

        程序员用汇编指令编程-->经过汇编器汇编成二进制可执行程序文件-->二进制文件被CPU读取进去-->CPU内部电路对二进制文件解码-->解码通过则CPU执行指令、完成指令动作。

        如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,在进行上面的后续部分。

1.4、从源代码到CPU执行过程

2、指令集对CPU的意义

2.1、汇编语言与C等高级语言的差异

        汇编难写,C好写。

        汇编无可移植性,C语言有一定的可移植性,Java等更高级语言移植性更强。

        汇编语言效率最高,C语言次之,Java等更高级语言效率更低。

        汇编不适合完成大型复杂的项目,更高级语言更适合更大、更复杂的项目。

2.2、汇编语言的本质

        汇编的实质是机器指令(机器码)的助记符,是一种低级符号语言。

        机器指令集是一款CPU的编程特征,是这款CPU的设计者指定的。CPU的内部电路设计就是为了实现这些指令集的功能。机器指令集就好像CPU的API接口一样。

2.3、汇编语言的发展过程

        纯机器码编程

        汇编语言编程

        C语言编程

        C++语言编程

        Java C#等语言编程

        脚本语言编程

2.4、总结

        汇编语言就是CPU的机器指令集的助记符,是一款CPU的本质特征。

        不同CPU的机器指令集设计不同,因此汇编程序不能在不同CPU间互相移植。

        使用汇编编程可以充分发挥CPU的设计特点,所以汇编编程效率最高,因此在操作系统内核中效率极其重要处都需要用汇编处理。

3、RISC和CISC的区别

3.1、CISC

        complex instruction set computer复杂指令集CPU

        CISC体系的设计理念是用最少的指令来完成任务(例如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Inter还一直采用CISC设计。

3.2、RISC

        Reduced instruction-Set computer精简指令集CPU

        RISC的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了。

3.3、CPU设计方式发展

        早期简单CPU,指令和功能都很有限。

        CISC年代——CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展。

        RISC年代——CPU仅提供基础功能指令(例如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。

3.4、RISC与CISC指令数对比

        一般典型CISC CPU指令在300条左右。

        ARM CPU常用指令在30条左右。

3.5、发展趋势

        没有纯粹的RISC和CISC,发展方向是RISC与CISC结合,形成一种介于二者之间的CPU类型。

        

        

        

http://www.lryc.cn/news/101871.html

相关文章:

  • SpringCloud学习路线(11)——分布式搜索ElasticSeach场景使用
  • 负数补码表示
  • ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱
  • C++ 类和对象
  • c# 此程序集中已使用了资源标识符
  • WPF实战学习笔记30-登录、注册服务添加
  • GDAL C++ API 学习之路 OGRGeometry 圆弧类 OGRCircularString
  • 机器学习:异常检测
  • flask中的蓝图
  • Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建
  • uniapp 瀑布流 (APP+H5+微信小程序)
  • 医疗小程序:提升服务质量与效率的智能平台
  • ComPDFKit 转档SDK OCR表格识别功能
  • 华为OD机考--阿里巴巴黄金箱
  • mybatis-config.xml-配置文件详解
  • 【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器
  • Ribbon源码
  • Linux下在终端输入密码隐藏方法
  • 【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】
  • 求分享如何批量压缩视频的容量的方法
  • ChatGPT 是如何工作的:从预训练到 RLHF
  • KafKa脚本操作
  • 【自动化运维】playbook剧本
  • java中双引号和单引号的区别
  • jenkinsfile指定jenkins流水线的构建号
  • 微信小程序:实现提示窗确定,取消执行不同操作(消息提示确认取消)showModal
  • 深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现
  • 解读随机森林的决策树:揭示模型背后的奥秘
  • OceanMind海睿思获评中国信通院“内审数字化产品评测”卓越级(最高级)!
  • TPlink云路由器界面端口映射设置方法?快解析内网穿透能实现吗?