通过散列技术的编译时间链接制造技术

技术编号:2852186 阅读:200 留言:0更新日期:2012-04-11 18:40
在将例如C语言的高级语言编译为机器可执行语言的后处理中通常使用链接器以将被单独编译的目标文件进行联编以及解析在这些单独的文件中声明的全局变量(140)的地址(142)。本发明专利技术提出在编译时间过程中通过使用被单独的文件所共享的称为全局变量散列表(130)的专用散列表进行链接。这样导致被处理的目标文件的汇集,这些目标文件按照它们的全局变量(140)的地址(142)是连贯的(coherent),能够被进一步正确汇编为机器可执行代码。该方法可用于使用跨单独模块的地址解析技术将单独的高级语言源文件进行编译以生成可执行机器码。

【技术实现步骤摘要】

本专利技术通常涉及一种电子数字数据结构的处理方法,尤其涉及一种用于运行程序的电子数字数据结构的处理方法。更特殊地,本专利技术引入一种将高级程序语言编译为机器可执行的字节码地新方法。
技术介绍
可执行Java字节码是机器可执行二进制码的一种形式,其在可安装在大部分计算机平台上的Java虚拟机(JVM)上运行。附带地,JVM已经成为平台无关计算的实际标准。Java程序员用Java语言编写程序。但是,到本文为止C语言程序员比Java程序员要多,这是因为在1969年出现的C语言要历史悠久得多,而Java仅从90年代中期才开始使用。希望有合适的结构模型来将C源程序翻译成Java字节码以便其能够在JVM上运行。目前,在市场上有大量的商业Java编译器工具包和C编译器工具包。但是直到本文为止还没有发布Java字节码的商业C编译器工具包。这主要是由于Java和Java字节码是紧密联系的观念。JVM已经被明确设计用于Java语言。例如,JVM不支持“指针型运算”和“显式(explicit)存储器分配和反分配”等C语言所固有的特征。JVM也是和被大部分其它处理器(例如英特尔80×86TM或摩托罗拉Po本文档来自技高网...

【技术保护点】
一种在计算机系统中将高级语言编译为机器可执行语言的方法,所述方法包括以下步骤:a)将高级语言源代码分解为令牌流,其中每个令牌由其全局变量(140)名来标识;b)为每个遇到的全局变量(140)构建全局变量散列表(GVHT)(1 30),通过散列函数(144)得到所述全局变量的唯一地址(142),其中所述GVHT(130)被用作对依赖唯一地址(142)的每个全局变量(140)进行引用以被随后的代码生成所使用的位置; c)分析所述令牌流的语法;d)将所 述语法转换为抽象语法树结构;e)分析所述抽象语法树结构的语义;f)从所述抽象语法树结构生...

【技术特征摘要】
MY 2004-12-14 PI 2004 51451.一种在计算机系统中将高级语言编译为机器可执行语言的方法,所述方法包括以下步骤a)将高级语言源代码分解为令牌流,其中每个令牌由其全局变量(140)名来标识;b)为每个遇到的全局变量(140)构建全局变量散列表(GVHT)(130),通过散列函数(144)得到所述全局变量的唯一地址(142),其中所述GVHT(130)被用作对依赖唯一地址(142)的每个全局变量(140)进行引用以被随后的代码生成所使用的位置;c)分析所述令牌流的语法;d)将所述语法转换为抽象语法树结构;e)分析所述抽象语法树结构的语义;f)从所述抽象语法树结构生成字节码助记符;以及g)将所述字节码助记符汇编为机器可执行语言。2.如权利要求1所述的将高级语言编译为机器可执行语言的方法,其中,对所述GVHT(130)进行构建以形成用于全局变量的汇编时间链接器包括以下步骤a)通过散列函数(144)对每个全局变量(140)的字符串进行遍历与合计;b)如果计算出的散列值与任何已记录的项目冲突则查询所述GVHT(130);c)在发生地址冲突的情况下,解决每个随后的全局变量的地址冲突;d)在计算出的唯一地址中记录各个全局变量(140)以作为已记录的项目。3.如权利要求2所述的将高级语言编译为机器可执行语言的方法,其中,所述散列函数(144)优选地为函数hashpjw,所述hashpjw函数包括以...

【专利技术属性】
技术研发人员:穆赫德哈纳菲亚阿卜杜拉
申请(专利权)人:艾克斯麦提克方案私人有限公司
类型:发明
国别省市:MY[马来西亚]

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1