ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构
来源:互联网 发布:python3 apache 编辑:程序博客网 时间:2024/05/18 01:00
ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构
参考朱有鹏ARM裸机课程
1、RISC和CISC的区别
(1)CISC复杂指令集的设计理念就是用最少的指令完成一个复杂的任务,
比如乘法只需要一条指令就可以完成,因此CISC的CPU设计比较复杂
好处是编译器容易设计,Intel就是用CISC设计。
(2)RISC精简指令集是让软件来完成复杂的任务,CPU本身仅提供基本的功能指令集
因此RISC 的CPU的指令集只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,
但是编译器的设计更难了。
PS:使用汇编语言的区别,如果是使用C语言的区别的话,那么他们是没有啥区别的,因为
编译器帮你做了工作。使用RISC的指令集的CPU比较的低功耗。因为里面使用的电路比较少。
2、统一编址和独立编址,哈弗架构和冯诺依曼结构
什么是IO?什么是内存?(内存可以随机访问,存储数据)
IO:input and output:CPU和其他的外部设备(串口、LCD、触摸屏)之间的通信的接口。
IO这里指的是:CPU的各种内部或者外部设备。
通过访问他们之间的寄存器来访问他们:
内存和CPU之间通过总线连接的,然后通过CPU数据总线来进行读写的。
内存与CPU的这种总线连接方式是一种直接连接,优点是效率高,
访问快,缺点是资源有限,扩展性差。
内存要跟使用CPU的频率比较多,把外设的寄存器当作一个内存地址来读写,从而以访问
内存的相同的方式来操作内存。叫做IO与内存统一编址方式。
因为数据是存在内存当中的,所以内存经常要跟CPU进行数据的交互的,所以需要使用这种方式,
效率是比较高的。
另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址。独立编址就是CISC架构
对比:
1、由于内存访问的频率高,因此采用总线式连接,直接地址访问,效率最高。
2、IO与内存统一编址方式,优势是IO当作内存来访问,编程简单,缺点是IO也需要占用一定的CPU地址空间,而CPU的地址空间是有限资源。
IO与内存独立编址的方式,优势是不占用CPU地址空间,缺点是CPU设计变复杂了
3、再谈冯诺依曼结构和哈弗结构
代码和数据是构成你的应用程序的两大核心
程序运行两大核心元素:代码(硬盘,FLASH)和数据(内存,RAM)
代码是我们写好的源代码经过编译,汇编之后的机器码,这些机器码可以拿给CPU去解码执行,
CPU不会也不应该去修改代码,所以代码是只读的。
但是数据是程序运行过程中定义和产生的变量的值,程序运行实际就是为了
改变数据的值。
冯诺依曼结构与哈弗结构:
程序和数据都放在内存中,且不彼此分离称为冯诺依曼结构。
CPU均采用这种冯诺依曼结构。
哈弗结构:
程序和数据是分开放置在不同的内存块中彼此完全分离。
比如大部分的单片机(51和ARM9)均采用哈弗结构。
优势对比:
(放程序的地方最好是只读的,放数据的地方最好是能读能写的)
1、冯诺依曼结构中程序和数据不区分的放在一起,因此安全和稳定性是个问题,好处是处理起来简单
2、哈弗结构中程序(一般是放在ROM、FLASH中的)和数据(一般是放在RAM中)独立分开存放,因此好处是安全和稳定性高,缺点是软件处理复杂一些。
需要统一的规划连接地址等等。
(不区分就是简单)
嵌入式的设备稳定性是第一要务。把程序和数据分开。
很多病毒都是写这个地方的,因为代码段可以被写。
- ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构
- ARM裸机编程需要知道的汇编知识1---可编程逻辑器件
- ARM裸机编程需要知道的知识3--寄存器
- 基于arm的C++反汇编 结构体和类
- ARM汇编结构
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(ARM汇编简介)
- ARM汇编程序中学ARM程序的结构和混合编程
- iOS 开发者应该知道的 ARM 结构
- iOS 开发者应该知道的 ARM 结构
- iOS 开发者应该知道的ARM 结构
- iOS 开发者应该知道的 ARM 结构
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(C与ARM汇编混合编程)
- 通过Android JNI编程来学习三大结构的ARM汇编
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(Makefile 简介)
- tiny6410裸机实验第1章--------------ARM汇编和编程基础(ATPCS 简介)
- 汇编结构体的声明和引用
- 朱有鹏老师ARM裸机1.1.ARM裸机第一部分-ARM那些你得知道的事
- 哈弗结构和冯诺依曼结构的区别
- SGISTL源码探究-stl_algo.h中的基础算法
- 玲珑杯 1097题 LIS(最长递增子序列)
- java爬虫之登录到教务系统抓取成绩
- Android 集成环信即时通讯修改用户密码
- 对于TomCat端口被占用问题
- ARM裸机编程需要知道的汇编知识2---哈弗结构和冯诺依曼结构
- 汇率表示法
- Android第三方框架之 引导蒙版TourGuide的使用
- tab切换echarts无法正常显示
- 【C++】实现复数类
- python中的str()和repr()
- python二进制协议结构信息分析
- 【机房管理】操作关系整理
- 比较全而标准的mysql配置