CN1315062C - 处理器装置、使用它的信息处理装置、编译装置及其方法 - Google Patents
处理器装置、使用它的信息处理装置、编译装置及其方法 Download PDFInfo
- Publication number
- CN1315062C CN1315062C CNB031412548A CN03141254A CN1315062C CN 1315062 C CN1315062 C CN 1315062C CN B031412548 A CNB031412548 A CN B031412548A CN 03141254 A CN03141254 A CN 03141254A CN 1315062 C CN1315062 C CN 1315062C
- Authority
- CN
- China
- Prior art keywords
- code
- pointer
- range information
- range
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 125
- 238000012545 processing Methods 0.000 claims abstract description 32
- 230000006870 function Effects 0.000 claims description 128
- 230000008569 process Effects 0.000 claims description 101
- 230000008676 import Effects 0.000 claims description 11
- 230000004069 differentiation Effects 0.000 claims description 9
- 230000003750 conditioning effect Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000029058 respiratory gaseous exchange Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 21
- 230000000694 effects Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 240000005373 Panax quinquefolius Species 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种处理器装置,包括:命令处理单元(1),读入并顺次执行存储器装置(30)上的程序;地址寄存器(3),存储程序中的指针的绝对地址;范围信息寄存器(4),使用绝对地址来存储有关该指针的范围信息;以及例外发生单元(7),在命令处理单元利用地址寄存器的指针对存储器装置进行存取时,输入命令处理单元的输出和范围信息寄存器的范围信息,在存储器装置的违反范围时,向命令处理单元输出例外信号S1。将指针、其存取范围信息不可分地相关联,即使超过模块,也可以正确地进行存取。
Description
技术领域
本发明涉及具有存储器保护功能的处理器装置、编译装置及其关联技术。
背景技术
计算机系统中的现有的存储器保护技术几乎由处理器或编译器单独完成,基于组合的存储器保护技术也不过是该技术的延伸。
作为处理器中的存储器保护技术,有如段寄存器等那样,使用表示地址范围的寄存器装置的段保护技术,以及设定存储器的可存取范围,将存储器管理单元(MMU)等设置在处理器中的分页保护技术等。
在这些技术中,通过仅对以处理器的特权模式工作的OS提供存取范围的设定,从而在不正确的存取时产生例外。
作为单独基于编译器的存储器保护技术,还有将全部用软件来实现存储器监视功能的代码埋入到程序中的方法。
有以软件高速进行存储器监视的处理器结构,但在仅具有高速进行存储器范围检查的结构中,不存在明确使用高级语言中的指针的结构。
在以上中,首先在段保护和分页保护中,由于只能以OS可执行的处理器的特权模式来重写,所以在不存在具有存储器保护功能的高级OS的情况下,不能使用。
此外,在控制和通信等用途中,不能使用任务切换开销大的MMU。
而且,段寄存器和MMU表的分配单位是按处理为单位被OS分配的单位,不可能进行对应于应用程序内部结构的细致的存储器保护,在与处理相当的处理器仅存在一个来装入应用程序中的大规模程序时,难以应用。
用软件进行的存储器保护技术在检查上需要时间,实用上差。
存在使用配有硬件的地址范围比较器,使其高速化的处理器的方法。但是,在对象间转交指针的情况下,指针保持的地址值需要与指针同时转交独立的存取范围,不存在严格支持转交的体系结构,停滞于窄范围中的被限定的保护。
而在可严格进行转交的情况下,由于没有可同时操作指针和存取范围的功能,所以在操作中发生中断的情况下,指针和存取范围的匹配性损失。
鉴于以上方面,在(日本)特开平7-6095号公报中,提出了以下技术:在通过指针,对存储器块进行存取时,不降低程序的执行速度,来防止不当的存取。
但是,在该技术中,在处理器中,尽管准备了存储地址范围的寄存器,但没有准备存储指针值本身的寄存器。
因此,实际上,基于该技术,不能分别处理指针和被该指针允许的地址范围信息。
即,在该技术中,为了保证所谓的指针和存取范围始终取得匹配的原子(アトミック)性,在每次指针的操作时,必须禁止中断等,否则效率会显著下降。
此外,在该技术中,对于一个处理,由局部模块内部中的存储器范围检查等来对付。因此,如果发生超过模块的存储器存取,则难以正确地保持其保护范围。
发明内容
因此,本发明的目的在于提供一种技术,在使用指针的程序语言中,原样保证实时性,并正确地保护超过模块的指针存取范围。
本发明提供一种处理器装置,包括:命令处理单元,读入并顺次执行存储器装置上的程序;地址寄存器,被所述命令处理单元读写,并且存储程序中指针的绝对地址;范围信息寄存器,被所述命令处理单元读写,并且使用绝对地址来存储有关该指针的范围信息;以及例外信号发生单元,在所述命令处理单元利用所述地址寄存器的指针,对存储器装置进行存取时,输入所述命令处理单元的输出和所述范围信息寄存器的范围信息,进行比较运算,在所述命令处理单元的输出与所述范围信息寄存器的范围信息不一致时,向所述命令处理单元输出例外信号。
本发明还提供一种处理器装置,包括:命令处理单元,读入并顺次执行存储器装置上的程序;程序计数器,被所述命令处理单元读写,并且存储程序中的执行地址值;范围信息寄存器,被所述命令处理单元读写,并且存储有关程序的执行地址值的范围信息;以及例外信号发生单元,在所述命令处理单元在所述程序计数器中存储新的执行地址值时,输入该新的执行地址值和所述范围信息寄存器的范围信息,进行比较运算,在该新的执行地址值与所述范围信息寄存器的范围信息不一致时,向所述命令处理单元输出例外信号。
本发明还提供一种处理器装置,包括:命令处理单元,读入并顺次执行存储器装置上的程序;地址寄存器,被所述命令处理单元读写,并且存储程序中的指针的绝对地址;第1范围信息寄存器,被所述命令处理单元读写,并且使用绝对地址,来存储有关该指针的范围信息;第1例外信号发生单元,在所述命令处理单元对存储器装置进行存取时,输入所述命令处理单元的输出和所述第1范围信息寄存器的范围信息,进行比较运算,在所述命令处理单元的输出与所述第1范围信息寄存器的范围信息不一致时,向所述命令处理单元输出第1例外信号;程序计数器,被所述命令处理单元读写,并且存储程序中的执行地址值;第2范围信息寄存器,被所述命令处理单元读写,并且存储有关执行地址值的范围信息;以及第2例外信号发生单元,在所述命令处理单元在所述程序计数器中存储新的执行地址值时,输入该新的执行地址值和所述第2范围信息寄存器的范围信息,进行比较运算,在该新的执行地址值与所述第2范围信息寄存器的范围信息不一致时,向所述命令处理单元输出第2例外信号。
本发明还提供一种编译装置,根据以可直接操作指针的程序语言记述的源代码,来生成执行代码,其中,该编译装置包括:存储器,用于保存变量范围;源解析单元,对源代码进行解析,根据判别条件来确定代码的转交目的地;变量区域分配单元,在所述源解析单元判别为变量说明的代码时,接受该代码,并且确定分配给该代码的变量区域,将变量地址和变量范围存储在所述存储器中;带有范围的指针生成单元,在所述源解析单元判别为从变量中生成了指针的代码时,接受该代码,并且从所述存储器中读出对应的变量的分配区域,生成用于生成带有范围的指针变量的代码;即时值指针生成单元,在所述源解析单元判别为从即时值中生成了指针的代码时,生成用于生成使用所有地址区域或设定值的带有范围的指针变量的代码;指针运算代码生成单元,在所述源解析单元判别为指针运算时,生成用于进行继承了地址范围的指针运算的代码;以及语言对应执行代码生成单元,在所述源解析单元不对应所述判别条件的任何一个条件时,接受代码,并且生成对应于该程序语言语法的代码。
本发明还提供一种编译装置,根据以可直接操作指针的程序语言记述的源代码,来生成执行代码,其中,该编译装置包括:函数代码范围存储用存储器,保存函数代码范围;执行代码存储器,保存生成的执行代码;源解析单元,对源代码进行解析,根据判别条件来确定代码的转交目的地;函数代码范围解析单元,在所述源解析单元判别为函数说明结束的代码时,对所述执行代码存储器的函数代码范围进行解析,将函数代码范围存储在所述函数代码范围存储用存储器中;带有代码范围的分支命令生成单元,在所述源解析单元判别为函数呼出的代码时,接受该代码,并且生成用于生成带有代码范围的分支代码;带有范围的函数指针生成单元,在所述源解析单元判别为生成了函数指针的代码时,接受该代码,并且生成用于生成带有代码范围的函数指针变量的代码;语言对应执行代码生成单元,在所述源解析单元不对应于所述判别条件的任何一个条件时,接受代码并生成对应于语言语法的代码;以及函数范围埋入单元,从所述执行代码用存储器中取出代码,将从所述函数代码范围存储用存储器中取出的值埋入在函数指针中。
本发明还提供一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:对程序源进行解析,根据判别条件,将处理分支进行的源解析步骤;在所述源解析步骤中被判别为变量说明时,确保变量区域并保存变量地址和变量范围的步骤;在所述源解析步骤中被判别为从变量中生成了指针时,生成用于生成带有范围的指针变量的代码的步骤;在所述源解析步骤中被判别为从即时值中生成了指针时,生成用于生成使用所有地址区域或设定值的带有范围的指针变量的代码的步骤;在所述源解析步骤中被判别为指针运算时,生成进行继承了地址范围的指针运算的代码的步骤;以及在所述源解析步骤中,在不对应于任何一个所述判别条件时,生成对应于该程序语言语法的代码的步骤。
本发明还提供一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:源解析步骤,对程序源进行解析,根据判别条件,将处理分支进行;函数代码区域保存步骤,在所述源解析步骤中被判别为函数定义结束时,保存函数代码区域;带有代码范围的分支命令生成步骤,在所述源解析步骤中被判别为函数呼出时,生成带有代码范围的分支命令;带有代码范围的函数指针生成步骤,在所述源解析步骤中被判别为函数指针生成时,生成带有代码范围的函数指针;以及即时值埋入步骤,在代码变换在所有的源中进行之后,将所述函数代码区域保存步骤中保存的函数区域信息埋入在所述带有代码范围的分支命令生成步骤和所述带有代码范围的函数指针生成步骤中生成的代码中。
本发明还提供一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:对程序源进行解析,根据判别条件,将处理分支进行的源解析步骤;在所述源解析步骤中被判别为变量说明时,确保变量区域并保存变量地址和变量范围的步骤;在所述源解析步骤中被判别为从变量中生成指针时,生成用于生成带有上限范围的指针变量的代码的步骤;在所述源解析步骤中被判别为从即时值中生成了指针时,生成用于生成利用所有地址区域或设定值的带有上限范围的指针变量的代码的步骤;在所述源解析步骤中被判别为指针运算时,生成进行继承了地址范围的指针运算的代码的步骤;以及在所述源解析步骤中没有对应于所述任何一个判别条件时,对应于该程序语言语法的代码生成步骤。
本发明还提供一种信息处理装置,包括:如上所述的处理器装置;将用户输入通知所述处理器装置的操作部;以及显示被所述处理器装置控制的图像的显示部
在第1发明的处理器装置中,包括:命令处理单元,读入并顺次执行存储器装置上的程序;地址寄存器,被命令处理单元读写,并且程序中指针的绝对地址;范围信息寄存器,存储被命令处理单元读写,并且使用绝对地址来存储有关该指针的范围信息;以及例外发生单元,在命令处理单元利用地址寄存器的指针,对存储器装置进行存取时,输入命令处理单元的输出和范围信息寄存器的范围信息,在存储器装置的违反范围时,向命令处理单元输出例外信号。
根据该结构,可以将指针和其范围信息不可分地相关联,即使指针被超过模块使用,也可以检测基于指针操作的违反存取,可以提高工作稳定性。
在第2发明的处理器装置中,包括:命令处理单元,读入并顺次执行存储器装置上的程序;程序计数器,被命令处理单元读写,并且存储程序中的执行地址值;范围信息寄存器,被命令处理单元读写,并且存储有关程序的执行地址值的范围信息;以及例外发生单元,在命令处理单元在程序计数器中存储新的执行地址值时,输入该新的执行地址值和范围信息寄存器的范围信息,在违反范围时,向命令处理单元输出例外信号。
根据该结构,可以将执行地址值和其范围信息不可分地相关联,即使执行地址值因分支等而变化,也可进行突发检测,可以提高工作稳定性。
在第3发明的处理器装置中,包括:命令处理单元,读入并顺次执行存储器装置上的程序;地址寄存器,被命令处理单元读写,并且存储程序中的指针的绝对地址;第1范围信息寄存器,被命令处理单元读写,并且使用绝对地址,来存储有关该指针的范围信息;第1例外发生单元,在命令处理单元对存储器装置进行存取时,输入命令处理单元的输出和第1范围信息寄存器的范围信息,在存储器装置的违反范围时,向命令处理单元输出第1例外信号;程序计数器,被命令处理单元读写,并且存储程序中的执行地址值;第2范围信息寄存器,被命令处理单元读写,并且存储有关执行地址值的范围信息;以及第2例外发生单元,在命令处理单元在程序计数器中存储新的执行地址值时,输入该新的执行地址值和第2范围信息寄存器的范围信息,在违反范围时,向命令处理单元输出第2例外信号。
根据该结构,可以将指针和其范围信息不可分地相关联,即使指针被超过模块使用,也可以检测基于指针操作的违反存取,可以提高工作稳定性。此外,可以将执行地址值和其范围信息不可分地相关联,即使执行地址值因分支等而变化,也可进行突发检测,可以提高工作稳定性。
在第4发明的处理器装置中,地址寄存器、第1范围信息寄存器、程序计数器、以及第2范围信息寄存器都由通用寄存器构成。
根据该结构,在已有的处理器装置中不进行大幅度的变更,也可以安装必要的功能。
在第5发明的处理器装置中,范围信息包含范围的上限值和范围的下限值。
在该结构中,根据上限值和下限值,可以明确地定义范围。
在第6发明的处理器装置中,范围信息包含范围的下限值和从该下限值至范围的上限值的长度。
在该结构中,根据上限值和从下限值至范围的上限值的长度,可以明确地定义范围。
在第7发明的处理器装置中,范围信息包含表示读写允许/禁止的属性。
根据该结构的属性,可以实现细致的存取控制。
在第8发明的处理器装置中,范围信息包含范围的上限值而不包含范围的下限值。
根据该结构,可以用很少的存储器量来实现实际情况上有效的范围保护。
在第9发明的处理器装置中,命令处理单元在一机器语言命令中执行将程序指针的绝对地址存储在地址寄存器中的处理、以及将该指针的范围信息存储在范围信息寄存器中的处理。
在第10发明的处理器装置中,命令处理单元在一机器语言命令中执行将新的执行地址值存储在程序计数器中的处理、以及将执行地址值的范围信息存储在范围信息寄存器中的处理。
在这些结构中,根据一机器语言命令来执行这些处理,不因中断而使处理被分断,原子性高,可以确保正确的动作。
附图说明
图1是本发明实施方式1的处理器装置的方框图。
图2(a)是本发明实施方式1中采用的源代码的例示图。
图2(b)~图2(d)是带有相同范围信息的指针的状态说明图。
图3是本发明实施方式2的编译装置的方框图。
图4是该编译装置的流程图。
图5是本发明实施方式3的编译装置的方框图。
图6是该编译装置的流程图。
图7是搭载了本发明实施方式1的处理器装置的信息处理装置的方框图。
图8(a)、图8(b)是该信息处理装置的外观图。
具体实施方式
首先,在具体结构的说明之前,说明本发明的基本考虑方法。
(关于存储器存取保护)
现有的大多数存储器保护技术,主流是以OS的存在为前提,以程序的处理单位来进行粒度粗糙的保护。
这在执行不特定代码时是有效的,但不适于仅执行设计者意图的程序的内部系统。
在编译程序中移交管理存储器保护功能的情况下,如果使存取前提的每个变量的存储器范围保持在编译程序中,则可以进行粒度细的存储器保护。
更具体地说,在有可能发生违反存储器范围的指针变量中,将计算该指针时使用的变量的存取范围不可分地相关联,在以后使用了该指针变量的存取时,进行范围检查就可以。
(处理器的必要功能)
在高速地进行存储器存取保护时,在普通的处理器上需要追加功能。首先,在处理器中,需要存储指针的绝对地址的寄存器、以及可以保持其存取范围的范围信息寄存器。此外,它们在不插入中断等时,应该可以用一个命令进行读写。
这样的话,可原子式地操作包含存取范围信息的指针,而且,程序设计者不需要特别在意将指针与范围信息相关联。
此时,指针的地址值和范围信息可分离地独立是必要的。
在仅对简单的软件中的存储器保护进行高速化的处理器情况下,有同时配有来自地址值的范围的处理器,但为了取得高级语言等级中的严密的匹配性,即使地址值被改写为哪一种值,存取范围信息指示的存储器范围都不变化。
其次,在处理器中,作为例外发生单元,应该设置地址比较器。而且,在发生利用了指针的存储器存取时,将最终发生的地址和指针保持的地址范围进行比较,如果在范围外,则产生例外。
这样的技术,对于现有的处理器结构,可作为简单的扩展功能追加性地安装。
(编译器的必要的功能)
编译器在将存储器区域分配给所有的变量时,需要保持各自的范围。
如果在程序中有生成指针的部分,则需要如以往那样生成指针,同时将生成该指针基础的变量的范围信息与该指针不可分地相关联。
此时,在I/O存取等中由程序中的即时值来生成地址的情况下,该指针具有的存取范围也可以指向所有的存储器空间。这样的话,由即时值生成的指针可用作没有以往那样的存取保护的指针。
此外,根据需要,用编译选择等来预先限定由即时值生成的指针的存取范围,并且还可以准备扩展句法并埋入在程序中。
对指针的运算处理最好如以往那样进行,在存取时,在处理器侧施加保护。
作为指针以外的违反范围的主要原因,有排列存取。排列与指针有所不同,在存取时,在寄存器中读出排列的地址,将变址(index)相加后进行存取。因此,在寄存器中读出排列地址时,包含排列的存取范围,如果在范围信息寄存器中进行读出,则可与指针同样地实现保护。即,没有区别排列地址和指针的实际利益。因此,在本说明书中,对一般的定义进行扩展,包含排列的地址,用作‘指针’。
此外,编译器一般与专用的程序库一起提供,在程序库中,大多是动态地分配存储器功能(例如,malloc函数等)的情况。该情况下,也可以反复形成具有确保动态地分配存储器的程序库的存储器范围信息的指针。这样的话,则包含并可使用本发明的‘指针’。
(基于存取范围限定的效率提高)
如以上那样,如果将指针和其范围信息不可分地相关联,则在存储器使用量方面,事实上使指针的尺寸与范围信息部分大的尺寸相等。但是,一般地,作为变量使用的指针与指针以外的变量相比,通常数目少,根据近年来的存储器容量增大的情况来看,RAM使用量的增大没有什么问题。在指针变量以外隐含地读出的范围信息也可以存储在ROM中。
此外,即使与效率有关,模块间的指针信息转交大多用寄存器来进行,所以如果是可以在带有地址范围中原子式地读写的处理器,则不发生因寄存器对寄存器的移动造成的效率下降。
即使在存储器对寄存器间移动时,由于在存储器上地址值和地址范围连续,所以期望存储器的突发存取和超高速缓存位的效率提高,效率的下降非常小。
但是,在不能容许很小的效率下降时,仅在对地址上方发限定中限定地址范围信息,而且可能使地址范围信息的信息量减少一半。
这里需要配有仅使用一半地址值命令的处理器和编译程序。此外,多数违反范围产生在地址上方,所以损失存取保护的完整性,但实用上的效果充分。
(关于程序的突发检测)
在现有的多数基于存储器监视的程序突发检测技术中,以OS的存在作为前提,以程序的处理单位进行粒度粗糙的保护。
这在执行不特定的代码时是有效的,但不适合于仅执行设计者意图程序的内部系统。
在向编译器转交管理突发检测功能时,如果使编译器保持存取前提的每个函数的存储器范围,则可进行粒度细的突发检测。
具体地说,在可能产生突发程序的函数指针变量中,将计算该函数指针时使用的函数的代码范围不可分地相关联,在以后对该程序的其他函数的分支时和执行中进行范围检查就可以。
如果是仅对高级语言的函数的保护,则即使分支时进行检查也没有问题,执行中的检查也可用同一机构来实现,所以根据高级语言的函数,在分支为由汇编语言形成的模块时,也可以发挥高效果。
(处理器的必要功能)
在高速进行程序的突发检测中,在普通的处理器中,需要追加功能。首先,在处理器中,需要程序计数器、以及可以保持该计数器的存取范围的寄存器。
除此以外,在程序计数器的值被更新时与范围信息进行比较,作为如果在范围外则发生例外的例外发生单元,应该设置比较器。
此外,需要追加使程序计数器可与其范围信息同时改写的分支命令。
这样的技术,对于现有的处理器结构,可作为扩展功能来追加。
(编译器的必要功能)
在对所有函数分配用于代码的存储器区域时,编译器需要保持各自的范围。
如果是程序中生成函数指针的部分,则如以往那样生成函数指针,同时需要使作为生成该函数指针基础的函数代码的范围与函数指针不可分地相关联。
此时,在埋入对OS的服务呼叫等范围不明的函数的呼出情况下,函数指针具有的存取范围指示所有的存储器空间。这样的话,生成的函数指针如以往那样可用作与存取保护无关的函数指针。
根据需要,也可以用编译选择等预先限定此时的函数指针的存取范围,准备扩展语句并埋入在程序中。
函数呼出时,程序计数器值和程序计数器的存取范围都可用更新的分支命令进行分支。函数内的分支仅用以往那样的更新程序计数器的命令来进行分支。
(基于存取范围限定的效率提高)
如上所述,事实上,函数指针的尺寸随范围信息变大,存储器使用量增大。但是,函数指针与数据用变量相比,使用比例通常很小。
关于静态的函数呼出,也可以将函数地址和范围值存储在ROM中。
此外,如果在存储器上连续存储地址值和范围信息,则期望存储器的突发存取和超高速缓存位的效率提高,效率的下降非常小。
但是,在不容许极小的效率下降的情况下,限定由汇编语言形成的函数保护,并仅在对地址上方的限制中限定地址范围信息,可以使地址范围信息的信息量减少一半。
这种情况下,需要配有可仅使用一半地址值的命令的处理器和编译器。但是,多数汇编语言的突发产生于地址上方,所以损失突发检测的完整性,但可获得实用上的效果。
根据以上说明,一边参照以下附图,一边具体说明本发明的实施方式。
(实施方式1)
本方式涉及处理器装置。图1是本发明实施方式1的处理器装置的方框图。
如图1所示,该处理器装置10通过总线20被连接到存储器装置30和I/O装置40等。而且,处理器装置10配有以下结构部件。
命令处理单元1经由总线20读入并顺次执行存储器装置30上的程序,与I/O装置40进行输入输出。
这里,在本方式中,在命令处理单元1和总线20之间,设置MMU(存储器管理单元),命令处理单元1和MMU2使用逻辑地址进行输入输出,MMU2进行逻辑地址/物理地址的变换,但例如省略MMU,命令处理单元1输入输出物理地址也无妨。
而且,在本方式的处理器装置10中,除了通常的处理器装置的主要部件以外,还设置以下寄存器(通常,由通用寄存器构成就可以)。
首先,地址寄存器3被命令处理单元1读写,并且存储程序中的指针的绝对地址。而第1范围信息寄存器4被命令处理单元1读写,并且有关该指针的范围信息使用绝对地址来存储。
这些地址寄存器3和第1范围信息寄存器4不可分地相关联成对。地址信息寄存器3和第1范围信息寄存器4的对应关系由命令处理单元1管理。
命令处理单元1在一个机器语言命令(带有存取范围信息的寄存器装载命令)中执行将程序指针的绝对地址存储在地址寄存器3中的处理、以及将该指针的范围信息存储在第1范围信息寄存器4中的处理。
更具体地说,如果命令处理单元1从存储器装置30上读出该寄存器装载命令,则对该命令进行解码并执行,其结果,命令处理单元1将程序指针的绝对地址存储在地址寄存器3中,同时将该指针的范围信息存储在第1范围信息寄存器4中。
该命令不以处理器为特权模式作为前提。即,该命令是可用应用程序的源代码来记述的单独命令。此外,该命令是一个机器语言命令,所以在命令的中途,不会发生中断,可以保证地址寄存器3的地址值和第1范围信息寄存器4的范围信息不被分断。由此,可确保原子性。
此外,存储于第1范围信息寄存器4的范围信息可以是包含(例1)范围的上限值和范围的下限值、包含(例2)范围的下限值和从该下限值到范围的上限值的长度的任何一种形式。在(例1)或(例2)中,对于一个指针,存储三个地址,所以基于指针的存储器使用量是通常使用量的3倍。
而且,在(例3)该范围信息中,包含表示读写许可/禁止属性(例如,许可读写,禁止写入等),可以进行细致的控制。
此外,如上述基本的考虑方法谈到的,即使构成(例4)范围信息,使得只设置范围的上限值,而不包含范围的下限值和从下限值到范围的上限值的长度,也有实用上的效果。
在图1中,第1例外发生单元7由比较器构成。第1例外发生单元7在命令处理单元1利用地址寄存器3的指针,对存储器装置30进行存取时,输入命令处理单元1的输出(在本例中,为逻辑地址值)和第1范围信息寄存器4的范围信息,进行比较运算,在有存储器装置30的违反范围时,将例外信号S1输出到命令处理单元1。
该存储器装置30的存取可以直接寻址,也可以是进行索引值的加减运算的间接寻址。
根据该处理器结构,一边进行范围检查,一边根据一个机器语言命令,可高速并且原子式地使用与范围信息不可分地相关联的指针。
而且,在OS等不插入以处理器的特权模式工作的程序时,用程序本身来产生例外,可以捕获不合适的存储器存取。
此外,如图1所示,在该处理器装置10中,设置以下的寄存器(通常由通用寄存器构成就可以)。
首先,程序计数器5被命令处理单元1读写,并且存储程序中的执行地址值。而第2范围信息寄存器6被命令处理单元读写,并且存储有关程序的执行地址值的范围信息。
这些程序计数器5、第2范围信息寄存器6是不可分地相关联的对。程序计数器5和第2范围信息寄存器6的对应关系由命令处理单元1管理。
命令处理单元1在一个机器语言命令(带有地址范围信息的分支命令)中执行将新的执行地址值存储在程序计数器5中的处理、以及将执行地址值的范围信息存储在第2范围信息寄存器6中的处理。
在使程序计数器5的执行地址值增加的情况下,或执行JUMP或CALL命令那样的分支命令时,进行该处理。
更具体地说,如果命令处理单元1从存储器装置30上读出该分支命令,则对该命令进行解码并执行,如果是后述的例外信号S2,则命令处理单元1将程序的新的执行地址值存储在程序计数器5中,而且如果需要,将执行地址值的范围信息与该地址值一起存储在第2范围信息寄存器6中。
一对程序计数器5和第2范围信息寄存器6与上述的一对地址寄存器3和第1范围信息寄存器4十分相似。
即,该命令(带有存取范围信息的分支命令)不以处理器为特权模式作为前提。即,该命令是可用应用程序的源代码来记述的单独命令。此外,该命令是一个机器语言命令,所以在命令的中途,不会发生中断,可以保证程序计数器5的执行地址值和第2范围信息寄存器6的范围信息不被分断。由此,可确保原子性。
此外,对于范围信息,也与上述相同。即,被存储在第2范围信息寄存器6中的范围信息可以是包含(例5)范围的上限值和范围的下限值,或包含(例6)范围的下限值和从该下限值到范围的上限值的长度的任何一种形式。在(例5)或(例6)中,对于一个执行地址值,存储三个执行地址值,所以存储器使用量是通常使用量的3倍。
如上述基本的考虑方法所述,即使构成(例7)范围信息,使得只设置范围的上限值,而不包含范围的下限值和从下限值到范围的上限值的长度,也有实用上的效果。
在图1中,第2例外发生单元8由比较器构成。第2例外发生单元8在命令处理单元1将新的执行地址值存储在地址寄存器5中时,输入这个新的执行地址值和第2范围信息寄存器6的范围信息,在有违反范围时,将第2例外信号S2输出到命令处理单元。
再有,第2例外发生单元8与第1例外发生单元7不同,在命令处理单元1设置了新的执行地址值后,不是输出例外信号S2,而是在命令处理单元1要设置新的执行地址值时,产生例外信号S2。这是因为在地址寄存器5中设置不正当的执行地址值本身有问题,预先防止出现这样的事态,避免突发(程序设计者将控制移动到没有意义的执行地址值上)。
在现有技术中,处理器的突发仅按处理单位产生,如果在本处理内部偶然地址突发,则难以检测。此外,大多在内部系统中单一处理的环境下,不能进行突发检测。
根据本方式的处理器结构,可限制软件模块内部的处理器的执行范围,可用细的粒度来检测用汇编语言等写入的模块的突发或因数据损坏造成的C语言模块的突发。
此外,根据该处理器结构,一边进行范围检查,一边根据一个机器语言命令,可高速并且原子式地使用与范围信息不可分地相关联的执行地址值。
而且,在OS等不插入以处理器的特权模式工作的程序时,用程序本身来产生例外,可以捕获不合适的分支。
下面,使用图2,来说明基于一对地址寄存器3和第1范围信息寄存器4的存储器保护的例子。图2(a)是本发明的实施方式1中提出的源代码的例示图。再有,在该例中,作为程序语言,使用c语言,但即使是直接使用指针的其他程序语言(例如,Pascal等)也具有同样的优点。
而且,在图2(a)的源代码中,定义了main函数和foo函数,在第05行中,按foo函数来使用main函数内说明(第03行)的int型的排列a[]。
此外,在foo函数中,在从第14行到第15行中,记述了使用索引i的环路。
如上所述,如果基于本方式的处理器结构(以下为了简单,假设为使用(例1)的情况),则对于一个指针,将上限值和下限值的范围信息不可分地相关联,结果可使用三个地址值。
这里,对应于该处理器结构的c语言的编译器在评价main函数的第03行时,首先知道排列a[]的开头地址(这里看作为指针)、以及其尺寸(从a[0]到a[2])为int型三个部分。
然后,在第05行中,作为foo函数的自变量,在评价转交排列a[]的开头地址时,根据上述知道的尺寸,对于排列a[],生成带有范围信息的指针(由a[]的指针地址值、以及该地址的下限值和上限值的三个地址值构成)。
然后,在第10行中,在foo函数被呼出时,该编译器将生成的排列a[]的带有范围信息的指针代入到int型的指针p(它也是带有范围信息的指针)中。
其结果,如果考虑指针p,则在代入当初,与排列a[]的带有范围信息的指针完全相同。
可是,在foo函数中,在从第14行到第15行中,记述使用了索引i的环路。实际上,该环路是脱离合适的存取范围的不正当的环路。
这里,如果索引i=0,则如图2(b)所示,指针p代入当初不变。即,指针p的地址与排列a[]的开头地址一致,指针p的上限值和下限值分别与排列a[]的上限值和下限值一致。
而且,根据第14行的for语句,使索引i增加,如图2(c)所示,在索引i=2时,指针p的地址指示排列a[]的最后元素a[2]的开头地址。至此属于由指针p的上限值和下限值确定的范围,没有什么问题。
但是,如果索引i=3,原样推进处理,则如图2(d)所示,指针p脱离排列a[]的范围,指示无效区域。该无效区域也许是设置了没有任何意义的无用值的区域,也许是用于确保其他模块的区域。无论如何,如果对无效区域任意地进行存取,则导致在那里也许可能确保的模块的损坏,所以不能保证正常的工作。
可是,根据本方式,在指针p的地址值中,如果设置将a[2]的开头地址仅推进一个int型的地址,则产生例外信号S1,预先避免出现这样的事态。
在第15行中,在该无效区域中,代入值‘0’,但在被代入前,指针p的违反范围被捕获,所以在无效区域中没有设置值‘0’。
这样,在本发明中,即使在处理器的等级中,通过用一个机器语言命令将指针和其范围信息不可分地相关联使用,仅用指针本身(严格地说,带有范围信息的指针),可以预先防止违反存取。
如果实施基于现有技术那样的保护,则在源代码等级中,准备还从哪个模块进入范围的全局的表,在该表中,存储变量的地址范围,一次一次地参照该表,而不能执行处理,所以难以高速执行。但是,该表没有将原来的指针的存取范围都反映在范围外的其他模块的指针中。此外,在交出指针侧的模块中,也不能知道该指针的存取范围是否合适。
根据本方式,简单地代入或交出带有范围信息的指针就足够了,在源代码等级中,也不需要特意形成全局的表。此外,即使进行指针的运算,只要包含范围信息并正确地进行运算,就可以保证运算后的指针的范围信息是合适的。
即,根据本发明,通过处理器的功能,在与普通的指针非常等价地使用的指针中,可以包含存取范围信息,即使超过模块,也可以高速并且正确地预防指针的不当存取。
从图2(a)可知,由于使用带有范围信息的指针,所以不需要特别的记述。而且,源代码的记述本身如以往那样,可确保源代码互换性。即,程序设计者不需要特别意识到使用带有范围信息的指针。
而且,如果将图1所示的处理器装置10搭载在信息处理装置上,则有图7所示的结构。
即,除了图1所示的各主要部件以外,将按键101连接到I/O装置40。按键101相当于接受用户输入的操作单元。作为操作单元,除了按键101以外,还可考虑鼠标器、输入板、数字转换器等。
此外,驱动器102被连接到总线20,驱动器102控制显示器装置103。显示器装置103相当于显示单元。作为显示单元,可以使用LCD、有机EL、CRT、投影机等。显示器装置103的显示方式不仅有彩色方式,也可以是灰度方式,也可以仅是黑白显示方式。
如图8所示,该信息处理装置具有本体机壳200,该信息处理装置的代表例是图8(a)所示的携带电话,或图8(b)所示的PDA或个人计算机等。
(实施方式2)
本方式涉及图1所示的基于地址寄存器3和第1范围信息寄存器4的支持带有范围信息的指针的编译装置。再有,在由源代码来生成可执行代码的情况下,通常,根据阶段,将编译、链接等方法组合,但在本说明书中,将从源代码至生成可执行代码的一连串方法统一称为编译。
图3是本发明实施方式2的编译装置的方框图。当然,图2所示的该编译装置51从可直接操作指针的程序语言(例如,c/c++语言、Pascal等)记述的源代码52中,生成执行代码60。
在该源代码52中,如实施方式1所述,由于使用带有范围信息的指针,所以不需要特别的记述。
在图2中,源解析单元53对源代码52进行解析,根据判别条件来确定代码的转交目的地。此外,在存储器50中保存变量范围。
变量区域分配单元54在源解析单元53判别为变量说明的代码时,接受该代码,并且确定分配给该代码的变量区域,将变量地址和变量范围存储在存储器50中。
带有范围信息的指针生成单元56在源解析单元53判别为由变量生成了指针的代码时,接受该代码,并且从存储器50中读出对应的变量的分配区域,生成用于生成带有范围的指针变量的代码,并输出到代码结合装置59。
即时值指针生成单元58在源解析单元53判别为由即时值生成了指针的代码时,生成用于生成使用所有地址区域或设定值的带有范围的指针变量的代码,并输出到代码结合装置59。
指针运算代码生成单元55在源解析单元53判别为指针运算时,生成进行继承了地址范围的指针运算,并输出到代码结合装置59。
语言对应执行代码生成单元57在源解析单元53不对应于任何一个判别条件时,接受代码,并且生成对应于该程序语言的代码,输出到代码结合装置59。
代码结合单元59将所有生成的代码进行结合,输出可执行的代码60。
这里,与实施方式1同样,指针的存取范围可由上限值和下限值来定义,也可由下限值和从该下限值至上限值的长度来定义,也可仅由上限值来定义。
下面,说明动作。图4是本发明实施方式2中的编译装置的流程图。
首先,在步骤31中,源解析单元53对源代码52进行解析并根据判别条件进行分支,确定代码的转交目的地。
在步骤31中,在被判别为变量说明时,在步骤32中,变量区域分配单元54确保变量区域,将该区域的地址和范围保存在存储器50中。
在步骤31中,在被判别为由变量生成了指针时,在步骤33中,带有范围的指针生成单元56生成使用变量地址和包含了变量范围的指针的代码,生成用命令处理单元1可进行处理的指针。
在步骤31中,在被判别为来自即时值的指针生成时,在步骤34中,即时值指针生成单元58生成由即时值生成的指针和基于预先确定的值的带有范围信息的指针。这种情况的范围信息由处理器的所有存储器空间或编译器的设定等来确定。
在步骤31中,在被判别为指针运算时,在步骤35中,指针运算代码生成部55生成进行继承了地址范围信息运算的代码。
在步骤31中,在被判别为上述以外的情况下,在步骤36中,语言对应执行代码生成单元57生成对应于语言语法的代码(如现有技术那样,符合C语言语法的执行代码)。
然后,在步骤37中,源解析单元53重复进行步骤31至36的处理,直至源的终端,如果到达源的终端,则结束编译处理。
这里生成的代码成对使用地址寄存器3和第1范围信息寄存器4,所以指针存取的范围在超过了指针生成元的变量范围时可以产生例外信号S1,在将伴随范围信息的指针装载到寄存器时,可用一个命令进行处理,所以代码尺寸可以更小并且可进行高速工作。
通过该编译装置51,原样使用现有的C语言源代码,支持带有范围信息的指针,进行存储器保护。
(实施方式3)
本方式涉及图1所示的通过程序计数器5和第2范围信息寄存器6的对来支持执行地址值的范围保护的编译装置。
图5是本发明实施方式3的编译装置的方框图。如图5所示,该编译装置71根据与实施方式2同样的以程序语言记述的源代码72,来生成执行代码81,配有以下所述的主要部件。
源解析单元73根据判别条件来确定代码的转交目的地。在函数代码范围存储用存储器79中,保存函数代码范围。在执行代码存储器78中,保存生成的执行代码。
函数代码范围解析单元74在源解析单元73判别为函数说明结束的代码时,对执行代码存储器78的函数代码的范围进行解析,将结束的函数代码范围存储在函数代码范围存储用存储器79中。
带有代码范围的分支命令生成单元75在源解析单元73判别为函数呼出的代码时,接受该代码,并且未解决的原样生成带有代码范围信息的分支命令,输出到执行代码存储器78。
带有范围的函数指针生成单元76在源解析单元73判别为生成了函数指针的代码时,接受代码,并且以值未解决的方式原样生成带有代码范围的函数指针函数。
语言对应执行代码生成单元77在源解析单元73不对应于任何一个判别条件时,接受代码,生成对应于语言语法的代码,将执行代码输出到执行代码存储器78。
函数范围埋入单元80在完成了所有程序源的处理后,从执行代码存储器装置78中读出执行代码,从函数代码范围存储用存储器79中读出未解决的函数地址和函数地址范围并埋入在代码中,输出可执行的代码81。
通过该编译装置,原样使用现有的C语言源代码,可以实现执行地址值的范围保护。
这里,与实施方式1同样,执行地址值的存取范围可由上限值和下限值来定义,也可由下限值和从该下限值至上限值的长度来定义,也可仅由上限值来定义。
下面,说明动作。图6是本发明实施方式3中的编译装置的流程图。
首先,在步骤41中,源解析单元73对源代码72依次进行解析,对句法表示的处理内容进行判别。
在步骤41中,在判别为函数定义结束时,在步骤42中,函数代码范围解析单元74将按函数产生的执行代码的开始地址和代码的地址范围保存在函数代码范围存储用存储器79中。
在步骤41中,在判别为函数呼出时,在步骤43中,带有代码范围的分支命令生成单元75生成带有范围信息的分支代码。
在步骤41中,在判别为函数指针生成时,在步骤44中,带有范围的函数指针生成单元76生成包含代码范围的指针。
在步骤41中,在判别为上述以外的情况下,在步骤45中,语言对应执行代码生成单元77如现有技术那样变换成对应于语言的执行代码。
在步骤46中,源解析单元73重复进行步骤41至45的处理,直至达到源的终端,如果达到源的终端,则在步骤47中,函数范围埋入单元80从执行代码存储器装置78中读出执行代码,从函数代码范围存储用存储器79中读出成为未解决的函数地址和函数地址范围并埋入在代码中,输出可执行代码81。
通过该编译装置71,原样使用现有的C语言源代码,支持带有保护范围信息的执行地址值,可以预防突发。
以上,分别说明了实施方式2、3的编译装置,但也可以将它们组合构成。当然,在实际的安装时,最好是进行组合。此时,各个方式的效果相互不干扰。
根据本发明,具有以下效果。
根据本发明,可以进行用现有技术不能实现的超过模块的指针存取范围的完全保护。
本发明可以形成具有原样保证现有处理器结构的执行代码的高位互换的存储器保护功能的处理器。
此外,用该处理器可以形成一边使用存储器保护功能一边原样保证可工作的源代码等级的互换性的编译器。
本发明无论是否存在以OS等处理器的特权模式工作的平台都可使用,而且在构成与以处理单位产生功能的MMU等不同的单一的巨大处理的情况下,也产生有效功能。
任务切换时被切换的内容也仅是寄存器,所以比使用可切换表的MMU等结构的内容短,最差时都可保证任务切换时间,还可应用于实时控制程序。
还可以与MMU等已有的存储器保护技术同时使用。
如果与收集并显示发生的例外的调试程序装置组合,则还可以监视实时控制程序的实际时间调试程序中的存储器不当存取,可以削减程序开发时间。
Claims (22)
1.一种处理器装置,包括:
命令处理单元,读入并顺次执行存储器装置上的程序;
地址寄存器,被所述命令处理单元读写,并且存储程序中指针的绝对地址;
范围信息寄存器,被所述命令处理单元读写,并且使用绝对地址来存储有关该指针的范围信息;以及
例外信号发生单元,在所述命令处理单元利用所述地址寄存器的指针,对存储器装置进行存取时,输入所述命令处理单元的输出和所述范围信息寄存器的范围信息,进行比较运算,在所述命令处理单元的输出与所述范围信息寄存器的范围信息不一致时,向所述命令处理单元输出例外信号。
2.如权利要求1所述的处理器装置,其中,范围信息包含范围的上限值和范围的下限值。
3.如权利要求1所述的处理器装置,其中,范围信息包含范围的下限值和从该下限值至范围的上限值的长度。
4.如权利要求1所述的处理器装置,其中,范围信息包含表示读写允许/禁止的属性。
5.如权利要求1所述的处理器装置,其中,范围信息包含范围的上限值而不包含范围的下限值。
6.如权利要求1所述的处理器装置,其中,所述命令处理单元在一机器语言命令中执行将程序指针的绝对地址存储在所述地址寄存器中的处理、以及将该指针的范围信息存储在所述范围信息寄存器中的处理。
7.一种处理器装置,包括:
命令处理单元,读入并页次执行存储器装置上的程序;
程序计数器,被所述命令处理单元读写,并且存储程序中的执行地址值;
范围信息寄存器,被所述命令处理单元读写,并且存储有关程序的执行地址值的范围信息;以及
例外信号发生单元,在所述命令处理单元在所述程序计数器中存储新的执行地址值时,输入该新的执行地址值和所述范围信息寄存器的范围信息,进行比较运算,在该新的执行地址值与所述范围信息寄存器的范围信息不一致时,向所述命令处理单元输出例外信号。
8.如权利要求2所述的处理器装置,其中,所述命令处理单元在一机器语言命令中执行将新的执行地址值存储在所述程序计数器中的处理、以及将执行地址值的范围信息存储在所述范围信息寄存器中的处理。
9.一种处理器装置,包括:
命令处理单元,读入并顺次执行存储器装置上的程序;
地址寄存器,被所述命令处理单元读写,并且存储程序中的指针的绝对地址;
第1范围信息寄存器,被所述命令处理单元读写,并且使用绝对地址,来存储有关该指针的范围信息;
第1例外信号发生单元,在所述命令处理单元对存储器装置进行存取时,输入所述命令处理单元的输出和所述第1范围信息寄存器的范围信息,进行比较运算,在所述命令处理单元的输出与所述第1范围信息寄存器的范围信息不一致时,向所述命令处理单元输出第1例外信号;
程序计数器,被所述命令处理单元读写,并且存储程序中的执行地址值;
第2范围信息寄存器,被所述命令处理单元读写,并且存储有关执行地址值的范围信息;以及
第2例外信号发生单元,在所述命令处理单元在所述程序计数器中存储新的执行地址值时,输入该新的执行地址值和所述第2范围信息寄存器的范围信息,进行比较运算,在该新的执行地址值与所述第2范围信息寄存器的范围信息不一致时,向所述命令处理单元输出第2例外信号。
10.如权利要求9所述的处理器装置,其中,所述地址寄存器、所述第1范围信息寄存器、所述程序计数器、以及所述第2范围信息寄存器都由通用寄存器构成。
11.一种编译装置,根据以可直接操作指针的程序语言记述的源代码,来生成执行代码,其中,该编译装置包括:
存储器,用于保存变量范围;
源解析单元,对源代码进行解析,根据判别条件来确定代码的转交目的地;
变量区域分配单元,在所述源解析单元判别为变量说明的代码时,接受该代码,并且确定分配给该代码的变量区域,将变量地址和变量范围存储在所述存储器中;
带有范围的指针生成单元,在所述源解析单元判别为从变量中生成了指针的代码时,接受该代码,并且从所述存储器中读出对应的变量的分配区域,生成用于生成带有范围的指针变量的代码;
即时值指针生成单元,在所述源解析单元判别为从即时值中生成了指针的代码时,生成用于生成使用所有地址区域或设定值的带有范围的指针变量的代码;
指针运算代码生成单元,在所述源解析单元判别为指针运算时,生成用于进行继承了地址范围的指针运算的代码;以及
语言对应执行代码生成单元,在所述源解析单元不对应所述判别条件的任何一个条件时,接受代码,并且生成对应于该程序语言语法的代码。
12.一种编译装置,根据以可直接操作指针的程序语言记述的源代码,来生成执行代码,其中,该编译装置包括:
函数代码范围存储用存储器,保存函数代码范围;
执行代码存储器,保存生成的执行代码;
源解析单元,对源代码进行解析,根据判别条件来确定代码的转交目的地;
函数代码范围解析单元,在所述源解析单元判别为函数说明结束的代码时,对所述执行代码存储器的函数代码范围进行解析,将函数代码范围存储在所述函数代码范围存储用存储器中;
带有代码范围的分支命令生成单元,在所述源解析单元判别为函数呼出的代码时,接受该代码,并且生成用于生成带有代码范围的分支代码;
带有范围的函数指针生成单元,在所述源解析单元判别为生成了函数指针的代码时,接受该代码,并且生成用于生成带有代码范围的函数指针变量的代码;
语言对应执行代码生成单元,在所述源解析单元不对应于所述判别条件的任何一个条件时,接受代码并生成对应于语言语法的代码;以及
函数范围埋入单元,从所述执行代码用存储器中取出代码,将从所述函数代码范围存储用存储器中取出的值埋入在函数指针中。
13.如权利要求11所述的编译装置,其中,范围由上限值和下限值来定义。
14.如权利要求11所述的编译装置,其中,范围由下限值和从该下限值至上限值的长度来定义。
15.如权利要求11所述的编译装置,其中,范围仅由上限值来定义。
16.一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:
对程序源进行解析,根据判别条件,将处理分支进行的源解析步骤;
在所述源解析步骤中被判别为变量说明时,确保变量区域并保存变量地址和变量范围的步骤;
在所述源解析步骤中被判别为从变量中生成了指针时,生成用于生成带有范围的指针变量的代码的步骤;
在所述源解析步骤中被判别为从即时值中生成了指针时,生成用于生成使用所有地址区域或设定值的带有范围的指针变量的代码的步骤;
在所述源解析步骤中被判别为指针运算时,生成进行继承了地址范围的指针运算的代码的步骤;以及
在所述源解析步骤中,在不对应于任何一个所述判别条件时,生成对应于该程序语言语法的代码的步骤。
17.一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:
源解析步骤,对程序源进行解析,根据判别条件,将处理分支进行;
函数代码区域保存步骤,在所述源解析步骤中被判别为函数定义结束时,保存函数代码区域;
带有代码范围的分支命令生成步骤,在所述源解析步骤中被判别为函数呼出时,生成带有代码范围的分支命令;
带有代码范围的函数指针生成步骤,在所述源解析步骤中被判别为函数指针生成时,生成带有代码范围的函数指针;以及
即时值埋入步骤,在代码变换在所有的源中进行之后,将所述函数代码区域保存步骤中保存的函数区域信息埋入在所述带有代码范围的分支命令生成步骤和所述带有代码范围的函数指针生成步骤中生成的代码中。
18.一种编译方法,根据以可直接操作指针的程序语言记述的源代码来生成,其中,该方法包括:
对程序源进行解析,根据判别条件,将处理分支进行的源解析步骤;
在所述源解析步骤中被判别为变量说明时,确保变量区域并保存变量地址和变量范围的步骤;
在所述源解析步骤中被判别为从变量中生成指针时,生成用于生成带有上限范围的指针变量的代码的步骤;
在所述源解析步骤中被判别为从即时值中生成了指针时,生成用于生成利用所有地址区域或设定值的带有上限范围的指针变量的代码的步骤;
在所述源解析步骤中被判别为指针运算时,生成进行继承了地址范围的指针运算的代码的步骤;以及
在所述源解析步骤中没有对应于所述任何一个判别条件时,对应于该程序语言语法的代码生成步骤。
19.如权利要求16所述的编译方法,其中,范围由上限值和下限值来定义。
20.如权利要求16所述的编译方法,其中,范围由下限值和从该下限值至上限值的长度来定义。
21.如权利要求16所述的编译方法,其中,范围仅由上限值来定义。
22.一种信息处理装置,包括:权利要求1所述的处理器装置;将用户输入通知所述处理器装置的操作部;以及显示被所述处理器装置控制的图像的显示部。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP166612/2002 | 2002-06-07 | ||
JP2002166612A JP2004013556A (ja) | 2002-06-07 | 2002-06-07 | プロセッサ装置、コンパイル装置及びその方法 |
JP166612/02 | 2002-06-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1469254A CN1469254A (zh) | 2004-01-21 |
CN1315062C true CN1315062C (zh) | 2007-05-09 |
Family
ID=29545872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031412548A Expired - Fee Related CN1315062C (zh) | 2002-06-07 | 2003-06-04 | 处理器装置、使用它的信息处理装置、编译装置及其方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20040019774A1 (zh) |
EP (1) | EP1369787A3 (zh) |
JP (1) | JP2004013556A (zh) |
CN (1) | CN1315062C (zh) |
DE (1) | DE03012184T1 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191164B2 (en) * | 2003-08-19 | 2007-03-13 | Intel Corporation | Searching for object images with reduced computation |
WO2005069142A1 (en) * | 2004-01-15 | 2005-07-28 | Matsushita Electric Industrial Co., Ltd. | Information-processing method and apparatus |
JP2006031363A (ja) * | 2004-07-15 | 2006-02-02 | Mitsubishi Research Institute Inc | バッファオーバーフロー脆弱性検出プログラム及びバッファオーバーフロー脆弱性検出方法 |
US7673345B2 (en) * | 2005-03-31 | 2010-03-02 | Intel Corporation | Providing extended memory protection |
US8381198B2 (en) * | 2005-08-15 | 2013-02-19 | Sony Ericsson Mobile Communications Ab | Systems, methods and computer program products for safety checking executable application programs in a module |
US7698542B2 (en) * | 2006-08-25 | 2010-04-13 | Infineon Technologies Ag | Circuit and method for comparing program counter values |
JP5392263B2 (ja) * | 2008-09-22 | 2014-01-22 | 富士通株式会社 | 情報処理装置及びそのメモリ保護方法 |
EP2273329A1 (en) * | 2009-06-24 | 2011-01-12 | Delphi Technologies Holding S.à.r.l. | Microcontroller protection method and apparatus comprising an on-circuit debugging module |
US8516450B2 (en) * | 2010-03-19 | 2013-08-20 | Oracle International Corporation | Detecting real-time invalid memory references |
CN105373488A (zh) | 2014-08-08 | 2016-03-02 | 中兴通讯股份有限公司 | 合法内存访问的探测方法及装置 |
US9459998B2 (en) * | 2015-02-04 | 2016-10-04 | International Business Machines Corporation | Operations interlock under dynamic relocation of storage |
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
GB2540206B (en) * | 2015-07-10 | 2018-02-07 | Advanced Risc Mach Ltd | Apparatus and method for executing instruction using range information associated with a pointer |
US10867031B2 (en) | 2015-07-23 | 2020-12-15 | Apple Inc. | Marking valid return targets |
GB2544996B (en) | 2015-12-02 | 2017-12-06 | Advanced Risc Mach Ltd | An apparatus and method for managing bounded pointers |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
GB2547249B (en) * | 2016-02-12 | 2019-09-11 | Advanced Risc Mach Ltd | An apparatus and method for generating signed bounded pointers |
GB2563580B (en) * | 2017-06-15 | 2019-09-25 | Advanced Risc Mach Ltd | An apparatus and method for controlling a change in instruction set |
US11334829B2 (en) * | 2019-12-19 | 2022-05-17 | Honeywell International Inc. | Methods and systems for electronic checklist data references |
CN112486089A (zh) * | 2020-12-10 | 2021-03-12 | 郑州捷安高科股份有限公司 | 可编程逻辑控制器的数据处理方法、装置及计算机设备 |
CN113485884B (zh) * | 2021-06-08 | 2023-06-06 | 北京控制工程研究所 | 一种基于处理器特性的星载软件异常状态监测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH076095A (ja) * | 1993-06-15 | 1995-01-10 | Nippon Telegr & Teleph Corp <Ntt> | 高信頼メモリアドレス指定方法 |
JP2000259410A (ja) * | 1999-03-10 | 2000-09-22 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ |
US6397310B1 (en) * | 1998-04-30 | 2002-05-28 | Thomson Licensing S.A. | Method and apparatus for controlling write access to storage means for a digital data processing circuit |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210832A (en) * | 1986-10-14 | 1993-05-11 | Amdahl Corporation | Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle |
JP2847974B2 (ja) * | 1991-01-21 | 1999-01-20 | 三菱電機株式会社 | データ処理装置 |
US5513337A (en) * | 1994-05-25 | 1996-04-30 | Intel Corporation | System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type |
US5685011A (en) * | 1995-05-15 | 1997-11-04 | Nvidia Corporation | Apparatus for handling failures to provide a safe address translation in an improved input/output architecture for a computer system |
JP4312272B2 (ja) * | 1995-10-06 | 2009-08-12 | モトローラ・インコーポレイテッド | 内部メモリへのアクセスを制限するマイクロコントローラ |
JPH10228421A (ja) * | 1997-02-14 | 1998-08-25 | Nec Ic Microcomput Syst Ltd | メモリアクセス制御回路 |
US6148384A (en) * | 1998-06-02 | 2000-11-14 | Adaptec, Inc. | Decoupled serial memory access with passkey protected memory areas |
JP4605871B2 (ja) * | 2000-08-25 | 2011-01-05 | 富士通セミコンダクター株式会社 | マイクロプロセッサ |
-
2002
- 2002-06-07 JP JP2002166612A patent/JP2004013556A/ja not_active Withdrawn
-
2003
- 2003-06-04 EP EP03012184A patent/EP1369787A3/en not_active Withdrawn
- 2003-06-04 US US10/453,608 patent/US20040019774A1/en not_active Abandoned
- 2003-06-04 CN CNB031412548A patent/CN1315062C/zh not_active Expired - Fee Related
- 2003-06-04 DE DE03012184T patent/DE03012184T1/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH076095A (ja) * | 1993-06-15 | 1995-01-10 | Nippon Telegr & Teleph Corp <Ntt> | 高信頼メモリアドレス指定方法 |
US6397310B1 (en) * | 1998-04-30 | 2002-05-28 | Thomson Licensing S.A. | Method and apparatus for controlling write access to storage means for a digital data processing circuit |
JP2000259410A (ja) * | 1999-03-10 | 2000-09-22 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
US20040019774A1 (en) | 2004-01-29 |
JP2004013556A (ja) | 2004-01-15 |
EP1369787A2 (en) | 2003-12-10 |
EP1369787A3 (en) | 2008-02-27 |
CN1469254A (zh) | 2004-01-21 |
DE03012184T1 (de) | 2004-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1315062C (zh) | 处理器装置、使用它的信息处理装置、编译装置及其方法 | |
CN1869952A (zh) | 指令执行设备、调试方法、调试设备以及调试程序 | |
CN100351788C (zh) | 嵌入式设备的驱动方法 | |
CN1101019C (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN1690971A (zh) | 中断控制装置 | |
CN1227589C (zh) | 用于保存返回状态的数据处理设备和方法 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN100351810C (zh) | 对特定指令类型的指令执行和数据访问计数的方法和系统 | |
CN1277207C (zh) | 使用基于时间的断点调试计算机程序的方法和系统 | |
CN1949187A (zh) | 一种程序调测系统及方法 | |
CN1203409C (zh) | 软件调试方法和软件开发辅助方法 | |
CN1302380C (zh) | 处理器和编译器 | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
CN1310148C (zh) | 程序执行处理终端装置和程序执行处理方法 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1517869A (zh) | 处理器、运算处理方法和优先度决定方法 | |
CN1758221A (zh) | 程序处理装置 | |
CN1497435A (zh) | 处理器 | |
CN1641607A (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN1105507A (zh) | 模型化系统 | |
CN1613058A (zh) | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 | |
CN1908904A (zh) | 实时内部简易监视器 | |
CN1627270A (zh) | 用于对指令执行和数据访问进行计数的方法和设备 | |
CN101052949A (zh) | 操作系统 | |
CN1630849A (zh) | 安全执行模式下信任客户使用安全核心系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070509 Termination date: 20120604 |