当前位置:首页 > 单片机 > 单片机
[导读]/******************************************************************************************************************参考:说明:。***********************************************************************

/******************************************************************************************************************
参考:
说明:。
******************************************************************************************************************/

记一下概念的东西,有我自己的认识:

关于ARM THUMB两个状态,我自己的见解就是就像现在的电脑,新买的CPU都是64位的,但是也可以装成32位的系统xp或win7,这就是CPU工作的32位状态。而如果装了64位的win7那CPU就工作在64位了,那么是ARM状态就对应上边例子中的64位的,THUMB对应32位的,这应该是一个过度。我问过u-boot Linux都是一直工作在ARM状态,一直都没有一点THUMB状态,对于那种刚开始学这个,没做过项目的老师们一再讲这个就现在想想没有多大的意义了。对于PC机来说现在是32位到64位的过渡,但是对于已经是后32位的时代的,还要讲16的东西,就该往前看看多说说64位的事了。

关于汇编学习的程序,先说它在哪里用到了吧。在u-boot 或者Linux的起始时用的是汇编,至于为什么这样,可以想想飞机的原理,飞机就是要摆脱轮子的慢,但是在飞机的起飞阶段,飞机还是要用轮子的。这是为什么,因为轮子可以有它的优点。就想上边两种情况要用汇编一样,这样作用就明了了。真正造车的才会深入了解轮子的各种信息(这种就是指芯片公司的AP工程师)。嵌入式学习者就像说相声的各个方面都要学习,京剧,二人转。不过那都叫学唱,同样道理对于嵌入式学习者来说,汇编的作用也就是这了。


关于汇编中的标号就是一个内存地址的别名:

如下图的START其实就是30000000,但是你在跳转的时候还是记忆START是更容易的。



关于DCD和SPACE:


StackUsrDCDUsrStackSpace

AREAMyStacks,DATA,NOINIT,ALIGN=2

UsrStackSpaceSPACEUSR_STACK_LEGTH*4

以上代码等价于C语言中的:


int*p=malloc(USR_STACK_LEGTH*4)

我个人认为汇编因为中不能将这样写,所以就找了UsrStackSpace来作中间量,它只是打酱油的,没有在历史上起到重要作用。



StackUsrDCDSPACEUSR_STACK_LEGTH*4

也可以这么说,如果代码仅有上边的,那么:StackUsr DCD UsrStackSpace会显得多余了,因为好正力就可以看出直接中UsrStackSpace就可以了。


但是由于UsrStackSpace代表这一块内存的首地址了,我要是以后经常访问尾地址了怎么办,再来一个玩意来存着尾地址。就用StackUsr了。让StackUsr干活还要把它伺候好了,它本身也要占个位置,这就用到了DCD了,DCD给StackUsr找个位置,然后就开始给它任务了。如果把UsrStackSpace交给它,那么StackUsr和UsrStackSpace就一个样了;如果把UsrStackSpace+(USR_STACK_LEGTH-1)*4给它,那么StackUsr指向了这个块的末地址。至于谁会这要求,那就是堆栈了!




关于堆栈,就是栈。我有我的看法,这就好比一个好师傅在拆一个录音机,螺丝大小不一。那么拆的时候一般会将它们按照顺序放着,这么做的目的就是为了一会儿修好了之后再装的时候能一个一个对应着装上去。慢慢引入解释就是说这个师傅把拆下的螺丝都放到了栈中,就是一个司空见惯的一个东西起了一个新名。师傅是靠各个螺丝的物理位置不同来安装的,但是对于计算机来说它是“平面”的,只有先后顺序没有物理位置,只能靠拆下每个螺丝的顺序来区别了,相当于画一个表,有123..顺序,然后将螺丝一一放入对应位置,装的时候就反序一个装上去。这样就不会有错了。说这么一大堆就是一个怕搞错了。

计算机什么时候这样做呢,就是用C语言编程在调用子函数时候,这个时候就相当于这个师傅要拆录音机了。子函数调用完后,就要回来继续运行主函数,这个时候就相当于师傅要装上录音机了。这时候就要看看在调用子函数时有没有做好善后工作了,有没有把主函数的状态保存下来,回来的时候好还原出来当初的状态。放状态的容器就是“栈”,为也还原时不出错,要状态所涉及的所有东西一一按照顺序放到这个容器里,到时候还原的时候再按时一定的顺序取出来,如果两个顺序都定死了,以后就不会出错了。关于制定这两个顺序大家想到了,规定一个这个容器只有一个口.....(关于这个顺序暂时还没有想到通俗的例子)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对工业以太网的认识,本文将对工业以太网的原理、工业以太网的关键技术以及工业以太网要解决的问题予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网网络优势、工业以太网和IOLINK的区别予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网的优势、工业以太网缺点、工业以太网的维护予以介绍。

关键字:

Apr. 23, 2024 ---- 随着节能成为AI推理服务器(AI Inference Server)优先考量,北美客户扩大存储产品订单,带动QLC Enterprise SSD需求开始攀升。然而,目前仅Solidi...

关键字: SSD AI 服务器

为增进大家对二极管的认识,本文将对续流二极管、续流二极管的工作原理以及二极管在工业产品中的应用予以介绍。

关键字: 二极管 指数 续流二极管

通过本文,您将了解到二极管反接是否有电压以及二极管在电子电路中的应用。

关键字: 二极管 指数 稳压电路

为增进大家对二极管的了解,本文将对ESD二极管和TVS二极管之间的区别予以介绍。

关键字: ESD TVS 二极管 指数

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术
关闭
关闭