堆、栈、重映射及内存分配理解

所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。

比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?(也即是在内存中的位置,每个处理器都有其寻址的范围,我们把这个范围从0开始编号,一般都是按字节编址的,寄存器的地址就是在这个内存中的位置)

又怎么通过寄存器来控制这些外围设备的运转?(这个就是硬件的设计的功能了,例如手机开关按键按下就可控制手机的亮灭。向相应的寄存器中写入对应的数据就可实现相应的功能

还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?(可以说是一样的,不同之处是放入上面寄存器内的数据是控制相应外设的功能的,而norflash内的是用于存储数据的)

再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?(指的是启动代码吧

他里面的代码是什么意思?(为能顺利的执行我们用高级语言写的程序做准备的,例如硬件初始化,堆栈的分配等

不要这个可以吗?(如果你的应用程序是使用汇编编写的就不需要这些

诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助。

 

每个设计的确都有它的现实考虑,编程语言是很实在的东西,往往外貌冷冰冰但其为什么是这样有充足原因。

1.内置数组,为什么不设置下标检测?如果检测下标,定然就会在每次访问下标时,做是否越界的检验,这就带来了运行时开销。如果你的算法非常好,定然不需要检测下标,则语言假定一定要在每次访问下标时都判断,就会影响效率并失去选择的机会。如果设置N个选项,可以用来关闭或打开是否检测下标,那不应该是一种语言应该干的,各有各的侧重点。

2.C语言传数组参数为什么默认是转换成指针类型?以C语言产生那个年代的硬件条件,复制

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值