在哈佛结构的ARM上使用C语言进行开发时用到了指向函数的指针会不会出错
在现代的计算机体系结构上,不管是冯诺依曼结构还是哈佛结构,指令和数据在内存里并不区分,区别在缓存。ARM是哈佛结构,指令缓存和数据缓存是分开的,CPU只管从内存(不区分指令区和数据区)中加载指令到指令缓存,指令执行用到的数据加载到数据缓存。对CPU而言,同一块内存区域,既可以是指令,也可以是数据,无所谓指令区和数据区。pc寄存器指向哪儿,哪儿就是指令,指令执行时引用到的内存区域,就是数据。CPU可以从任意实现了内存读操作的硬件运行程序,不一定要加载到内存。比如NOR Flash,读操作是内存模式,写操作是端口模式,因此CPU可以从NOR Flash中直接加载指令执行;而NAND Flash,读、写操作都是端口模式,CPU不能直接执行,必须先加载到内存。另一方面,程序文件确实分代码段和数据段,不过这是给程序加载器在加载程序时指示用的,CPU不关心这些。内存页面也有读、写、执行的区分,这些是由MMU单元管理的,跟CPU也没关系。
■网友
ARM也是平坦地址模型的处理器。倒是AVR平台上要着重注意,因为AVR平台并不是平坦地址模型的设计。
■网友
指向代码的指针,它本身是一个数据。
推荐阅读
- 北京地铁11号线西段三座车站提前实现主体结构封顶
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- 汽车知识|乐高发布Senna GTR,结构更加逼真,性价比不俗
- 汽车娱生活|售12.99万起,盘点三款合资中型SUV,还有一款非承载式车身结构
- 为啥会有多种通信协议
- 高考|提前了解,快人一步!2021年“新高考”数学试卷结构&题型分析
- 视结构|
- 趣头条|新款宝马2系Active Tourer谍照曝光 采用新式灯组结构
- 是否有类似企查查的网站可以快速查询企业所属的行业,(根据《产业结构调整指导目录》(2011 年本))
- 最近在学习计算机体系结构,也看了不少相关的书,做了些实验,有些疑惑,这门课的意义是啥有啥用
