一种增加处理器上的存储器的方法,使得该处理器能存取大于其指令位数所能表达的存储器大小。该处理器上设有一中央处理单元及一固定存储器。该方法包含于该处理器上提供一扩充存储器,使用一地址延伸器以增加位的方式延伸数据地址以及寄存器地址,以及使用一堆栈指针产生器以增加位的方式延伸堆栈地址,在堆栈地址大于该固定存储器的范围时对增加的位产生进位,并将超出该固定存储器的范围的堆栈数据存取于该扩充存储器。(*该技术在2023年保护过期,可自由使用*)
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种,特别涉及一种增加处理器中内部数据存储器的堆栈存储器的方法。
技术介绍
MCS(Micro Computer System)是Intel公司对微处理器的总称,而其所开发的MCS-31/32及51/52系列的处理器更是普遍地应用在工业界中。一般而言,微处理器只含有少量的存储器以及输入输出点,以MCS-51系列的单芯片为例,它有4K字节的程序存储器、128字节的数据存储器以及32条输入输出点,MCS-52系列的处理器则是将程序存储器增加为8K字节,以及将数据存储器增加为256字节,而MCS-31/32及51/52系列的处理器同样使用一个8位的中央处理单元。程序存储器用来存放使用者所撰写的程序,属于只读存储器(ROM),数据存储器则是随机存取存储器(RAM),可供中央处理单元运作时读取或写入数据,通常是用来当程序执行时暂时存放数据的寄存器。请参考图1,图1为已知MCS-51系列的处理器其内部数据存储器12的示意图。内部数据存储器12为堆栈存储器、数据存储器及寄存器存储器所共用,堆栈地址、数据地址及寄存器地址都是8位的地址,处理器的中央处理单元所执行的也是8位的指令集,在存取内部数据存储器12时,8位的指令及8位的地址输入一存储器地址产生器14后,输出存储器地址来存取内部数据存储器12。MCS-51系列的处理器其内部数据存储器的容量是128字节,MCS-52系列的处理器其内部数据存储器的容量则是256字节,而MCS-51/52系列的处理器其外部数据存储器同样最大可扩充至64K字节。一般来说,使用者可采用直接定址法或间接定址法来存取内部数据存储器12,直接定址法是将数据存储器其中一个地址的内容取出作运算,并放入寄存器中,而间接定址法是使用寄存器作为指针,再取得该指针内的值。内部数据存储器12可划分下列几个部分,第一,地址00H-1FH为寄存器库,此地址共32字节被分成4个工作寄存器库(Register Bank),每一个寄存器库内含有8个寄存器,寄存器库中的数据可采直接或间接定址法来存取。第二,地址20H-2FH为位定址区,地址20H-2FH共有16字节,也就是128个位,使用者可利用位运算的指令,直接对位定址区中的位做运算。第三,地址30H-7FH为一般用途区,此区域可供使用者规划,通常堆栈(stack)即设在此区域,只要将堆栈指针(stack pointer)指到此区即可。第四,地址80H-FFH亦为一般用途区,此区域只存在于MCS-52系列的处理器中,采用间接定址法来存取数据。请参考图2,图2为已知内部数据存储器12使用两个堆栈的示意图。内部数据存储器12的使用配置如图所示,一部分作为寄存器及数据的储存,一部分提供堆栈使用。如上所述,通常堆栈会设在内部数据存储器12的一般用途区之中,将堆栈指针指向一般用途区的一个位置作为堆栈的起始位置,这个堆栈通常是用来存放呼叫子程序的程序计数,或者是使用者自定的数据。然而很多程序在呼叫子程序时,可能会需要传参数,这时必须使用另一个堆栈来储存参数,一般都是使用参数指针(parameter pointer)由内部数据存储器12的最高地址开始向下数,由于两个堆栈必须共用有限的存储器空间,所以使用者在设计程序时需注意两个堆栈的使用数量,否则很有可能造成数据的错误。由上述可知,已知的MCS-51/52系列的处理器仅提供有限的内部数据存储器12,而且堆栈存储器、数据存储器及寄存器存储器必须共用这个内部数据存储器。然而由于系统的发展日益复杂,所需的堆栈存储器与数据存储器都大量的增加,虽然数据存储器12可以利用外部数据存储器来作扩充,但是堆栈存储器的大小却还是受限于处理器所提供的内部数据存储器。由于堆栈存储器的大小受到限制,如此一来,复杂的程序常会有堆栈存储器不够使用的情形发生,因为程序在呼叫子程序时,必须使用堆栈来记录,但是受限于堆栈存储器的大小,程序中便只能呼叫一定数量的子程序,再者,若是子程序中需要传参数,更是需要使用大量的堆栈。然而由于MCS-51/52的指令即为八位长度,在其指令集的限制下,仅使用一个字节(八位)来表示其内部存储器位置,故其内部存储器大小始终受限于256字节(二的八次方)。在堆栈存储器的大小无法扩充的情况下,程序设计者在撰写程序必须注意使用的堆栈数量,使得程序的开发更加困难。
技术实现思路
因此本专利技术的主要目的是提供一种增加处理器上的存储器的方法,以解决上述问题。为实现上述目的,本专利技术提供一种增加处理器上的存储器的方法,该处理器上设有一中央处理单元及一固定存储器,该方法包含(a)在该处理器上提供一扩充存储器;(b)使用一地址延伸器以增加位的方式延伸数据地址以及寄存器地址;以及(c)使用一堆栈指针产生器以增加位的方式延伸堆栈地址,使该处理器可存取大于其指令集位限制的存储器,在堆栈地址大于该固定存储器的范围时对增加的位产生进位,并将超出该固定存储器的范围的堆栈数据存取于该扩充存储器。而在步骤(c)中,还包含提供一高位堆栈地址,在堆栈地址大于该固定存储器的范围时,使用该高位堆栈地址来储存该增加位产生的进位。附图说明图1为已知MCS-51系列的处理器其内部数据存储器的示意图。图2为已知内部数据存储器使用两个堆栈的示意图。图3为本专利技术处理器的内部数据存储器的示意图。图4为本专利技术内部数据存储器配置的示意图。图5为本专利技术内部数据存储器使用两个堆栈的示意图。附图标号说明12内部数据存储器 14存储器地址产生器22内部数据存储器 24固定存储器26扩充存储器 28地址延伸器30堆栈指针产生器具体实施方式请参考图3,图3为本专利技术处理器的内部数据存储器22的示意图。内部数据存储器22包含一固定存储器24以及一扩充存储器26,在一块较大的存储器中,可分配一个区域作为固定存储器24(通常为256个字节),固定存储器24之外的其它区域则作为扩充存储器26。由于存储器的容量变大,需要较多的位来作定址,而处理器的中央处理单元仅能处理8位的指令集,在不改变指令集的情况下,中央处理单元所传出的原始地址先经由一地址延伸器28在原始地址之前增加适当的位来延伸地址数据,延伸后的地址再由存储器地址产生器14转换为存储器地址,如此,中央处理单元便可以存取较大的数据存储器。然而,受限于中央处理单元8位的指令集,最多只能表示到FFH,所以最多只能存取256字节的存储器大小,换句话说,中央处理单元还是只能在固定存储器24的范围内存取数据,而固定存储器24由堆栈、数据以及寄存器共同使用,但是由于堆栈特殊的处理方式,可以使用扩充存储器26。堆栈处理方式的特性就是先进后出,也就是存入堆栈中的数据必须等到下一笔存入堆栈中的数据被取出后才会被取出使用,而最后一笔存入堆栈中的数据则会最先被取出的数据,在此情况下,只要提供一块够大的存储器空间,则堆栈内就可以不断的存入数据。堆栈运作时是使用一堆栈指针来指向一个存储器地址作为堆栈的起始位置,已知的堆栈指针受限于8位的大小,最多只能表示到FFH,若此时再存入一笔数据至堆栈中,则堆栈指针变成0,则数据便会覆盖到堆栈起始地址的数据,所以本专利技术使用一堆栈指针产生器30来延伸堆栈指针的位,使堆栈指针储存的地址能够经由存储器地址产生器14转换为可以存本文档来自技高网...
【技术保护点】
一种增加一处理器上的存储器的方法,该处理器上设有一中央处理单元及一固定存储器,该方法包含:(a)在该处理器上提供一扩充存储器;(b)使用一地址延伸器以增加位的方式延伸数据地址以及寄存器地址;以及(c)使用一堆栈指针产 生器以增加位的方式延伸堆栈地址,使该处理器可存取大于其指令集位限制的存储器,于堆栈地址大于该固定存储器的范围时对增加的位产生进位,并将超出该固定存储器的范围的堆栈数据存取于该扩充存储器。
【技术特征摘要】
【国外来华专利技术】
【专利技术属性】
技术研发人员:杜立群,陈炳盛,曾宝庆,郭弘政,
申请(专利权)人:联发科技股份有限公司,
类型:发明
国别省市:71[中国|台湾]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。