用于64位地址模式优化的算法_3

文档序号:8323917阅读:来源:国知局
那么在步骤222更新当前表达式以指向e2。
[0033]在步骤224,编译器150确定“Constant_Val ”变量是否小于或等于“Preserved_Val”变量。如果在步骤224编译器150确定“Constant_Val”变量小于或等于“Preserved_Val”变量,那么方法200前进到步骤226,在该处编译器150返回零常量偏移量值。否则,方法200前进到步骤228,在该处编译器150提取等于以下值的常量偏移量值:PreSerVed_Val 变量减去 Constant_Val variable 变量。
[0034]因此,如果通过方法步骤200,编译器150能够提取常量偏移量值,那么常量偏移量值可包括在实现“寄存器加偏移量”方法的汇编级指令中。
[0035]总之,本发明的实施例阐述用于从包括在计算机程序的高级源代码中的64位类型转化表达式中提取存储器地址偏移量的技术。编译器150接收64位类型转换表达式,其包括一个或多个32位表达式,例如“_20*x”、“30*y”和“1100”。编译器150根据上述方法200的步骤204确定用于一个或多个32位表达式中的每一个的范围,并且随后确定一个或多个32位表达式中的每一个的范围是否是32位无符号整数的范围的子集。假设范围满足该子集要求,则如以上在方法200的步骤212-228中所描述的,编译器150基于一个或多个32位表达式中的每一个的范围来计算存储器地址偏移量。
[0036]本文所公开的技术的一个优势是编译器150配置为自动将计算机程序的高级指令翻译为实现“寄存器加偏移量”方法的汇编级指令,如本文所述,其提供数个好处。此外,这些好处可以包括达到由计算机程序所引用的寄存器数目的整体减少以及其中所包括的地址计算的复杂性的整体下降的目的。结果是计算机程序可以更高效地执行在处理器上并且可以允许其他计算机程序利用所释放的寄存器,其增大了并行执行的可能性。
[0037]本发明的一个实施例可以实现为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写入的存储介质(例如,计算机内的只读存储器设备,诸如可由光盘制度存储器(CD-ROM)驱动器读取的CD-ROM盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息jP(ii)可写入的存储介质(例如,软盘驱动器内的软盘或硬盘驱动器内或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0038]以上已参照特定实施例对本发明进行了描述。然而,本领域技术人员将理解的是,可对此做出各种修改和变化,而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为示例性的而非限制性的。
[0039]因此,本发明的实施例的范围由所附权利要求所阐述。
【主权项】
1.一种用于从包括在计算机程序的高级源代码中的64位类型转换表达式中提取存储器地址偏移量的方法,所述方法包括: 接收所述64位类型转换表达式,其中所述64位类型转换表达式包括一个或多个32位表达式; 针对所述一个或多个32位表达式中的每一个,确定用于所述32位表达式的范围; 通过对所述32位表达式的所述范围求和来计算总范围; 确定所述总范围是用于32位无符号整数的范围的子集; 基于用于所述一个或多个32位表达式的所述范围来计算所述存储器地址偏移量;以及 生成引用所述存储器地址偏移量的至少一个汇编级指令。
2.根据权利要求1所述的方法,其中包括在所述一个或多个32位表达式中的第一32位表达式包括常量值。
3.根据权利要求2所述的方法,其中确定用于所述第一32位表达式的所述范围包括提取与所述第一 32位表达式相关联的所述常量值。
4.根据权利要求2所述的方法,其中包括在所述一个或多个32位表达式中的第二32位表达式包括至少一个变量。
5.根据权利要求4所述的方法,其中确定用于所述第二32位表达式的所述范围包括: 解析所述高级源代码以确定在所述计算机程序的执行期间将指派到所述至少一个变量的最小值;以及 将用于所述第二 32位表达式的所述范围的下限设置到所述最小值。
6.根据权利要求5所述的方法,其中基于用于所述一个或多个32位表达式的所述范围来计算所述存储器地址偏移量包括: 将第一变量和第二变量建立为具有等于零的值; 将与所述第一 32位表达式相关联的所述常量值添加到所述第一变量; 从所述第二值减去与所述第二 32位表达式相关联的所述下限;以及当所述第一值小于或等于所述第二值时将所述存储器地址偏移量设置到所述第二值与所述第一值之间的差值;或 当所述第一值大于所述第二值时将所述存储器地址偏移量设置到零。
7.根据权利要求1所述的方法,其中在所述至少一个汇编级指令中内联引用所述存储器地址偏移量。
8.根据权利要求1所述的方法,其中所述汇编级指令当由处理器执行时使得所述处理器: 从基寄存器加载第一值; 将所述第一值添加到所述存储器地址偏移量以产生第二值;以及 引用由所述第二值索引的存储器地址。
9.一种用于从包括在计算机程序的高级源代码中的64位类型转换表达式中提取存储器地址偏移量的方法,所述系统包括: 处理器,其配置为: 接收所述64位类型转换表达式,其中所述64位类型转换表达式包括一个或多个32位表达式; 针对所述一个或多个32位表达式中的每一个,确定用于所述32位表达式的范围; 通过对所述32位表达式的所述范围求和来计算总范围; 确定所述总范围是用于32位无符号整数的范围的子集; 基于用于所述一个或多个32位表达式的所述范围来计算所述存储器地址偏移量;以及 生成引用所述存储器地址偏移量的至少一个汇编级指令。
10.根据权利要求9所述的系统,其中包括在所述一个或多个32位表达式中的第一 32位表达式包括常量值。
【专利摘要】本发明的一个实施例阐述一种用于从包括在计算机程序的高级源代码中的64位类型转换表达式中提取存储器地址偏移量的技术。该技术涉及接收64位类型转换表达式,其中该64位类型转换表达式包括一个或多个32位表达式;确定用于一个或多个32位表达式中的每一个的范围;通过对32位表达式的范围求和来计算总范围;确定总范围是用于32位无符号整数的范围的子集;基于用于一个或多个32位表达式的范围来计算存储器地址偏移量;以及生成引用存储器地址偏移量的至少一个汇编级指令。
【IPC分类】G06F9-45
【公开号】CN104641350
【申请号】CN201280003006
【发明人】孔祥云, 王建中, 维诺德·格罗弗
【申请人】辉达公司
【公开日】2015年5月20日
【申请日】2012年11月6日
【公告号】CN103339621A, CN103348317A, CN103460188A, CN103608774A, DE112012000187T5, DE112012000195T5, DE112012000209T5, DE112012000212T5, DE112012000214T5, US9009686, US20130113809, US20130117548, US20130117734, US20130117735, US20130117737, WO2013070616A1, WO2013070621A2, WO2013070635A1, WO2013070636A1, WO2013070637A1
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1