CN101369233A - 程序编译方法和编译器 - Google Patents
程序编译方法和编译器 Download PDFInfo
- Publication number
- CN101369233A CN101369233A CNA2007101418560A CN200710141856A CN101369233A CN 101369233 A CN101369233 A CN 101369233A CN A2007101418560 A CNA2007101418560 A CN A2007101418560A CN 200710141856 A CN200710141856 A CN 200710141856A CN 101369233 A CN101369233 A CN 101369233A
- Authority
- CN
- China
- Prior art keywords
- source program
- mentioned
- vector
- compiled
- code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了对源程序进行编译的方法和对源程序进行编译的编译器。根据本发明的一个方面,提供了一种对源程序进行编译的方法,其特征在于,包括:在对上述源程序进行语法分析时,识别与向量对齐有关的暗示;以及在生成代码时,根据上述识别出的与向量对齐有关的暗示生成简化的代码。
Description
技术领域
本发明涉及数据处理技术,特别涉及对源程序进行编译的技术。
背景技术
近年来,需要高度专用的嵌入式微处理器,例如数字信号处理器(Digital Signal Processor,DSP),来实时处理数字化的模拟信号,例如处理音频、视频、图像、和通信等的数据。
通常的数据处理方法对大的数据组,例如阵列的不同元素执行相同或几乎相同的操作。在此情况下,由于单个指令(例如加载、存储、整数相加等)只对单个数据元素进行操作,所以通常的数据处理方法的效率非常低。
由此,人们设计并开发了单指令多数据(Single Instruction MultipleData,SIMD)体系结构,其通过对并行向量的不同数据元素执行相同类型的计算,来提高程序的数据处理性能。现有的大多数高性能处理器支持SIMD体系结构,这些处理器包括多个功能单元,一些功能单元用于处理标量数据,而另一些功能单元组合在一起用于处理结构化的SIMD向量数据。SIMD体系结构通常用于处理进行高性能计算的向量数据或多媒体数据,例如使用三元(r,g,b)格式进行编码的颜色信息,或者使用四元(x,y,z,w)格式进行编码的坐标信息等等。
有关SIMD体系结构的具体细节参见以下文献1-4:
Dorit Nuzman,Ira Rosen和Ayal Zaks的“Auto-Vectorization ofInterleaved Data for SIMD”,PLDI’06 June 10-16,2006,Ottawa,Ontario,Canada,p.132-142(文献1);
Alexandre E.Eichenberger,Peng Wu和Kevin O’Brien的“Vectorization for SIMD Architectures with Alignment Constraints”,PLDI’04,June 9-11,2004,Washington,DC,USA,p.82-93(文献2);
A.Krall和S.Lelait的“Compilation techniques for multimediaprocessors”,International Journal of Parallel Programming,28(4):347-361,2000(文献3);以及
R.Leupers的“CodeO ptimization Techniques for EmbeddedProcessors.Methods,Algorithms,and Tools”,Kluwer Academic Publisher,Boston,2000(文献4),本发明在此通过参考引入上述文献的整个内容。
尽管SIMD体系结构极大地提高了数据处理能力,但是SIMD体系结构要求向量操作数的内存地址是向量对齐的,即要求向量的指针是向量对齐的(vector aligned)。因此,在对源程序进行编译的过程中,在将向量的操作数加载到寄存器之前,需要判断指针是否向量对齐,如果指针没有向量对齐,则需要对齐指针,并在对加载有操作数的寄存器进行操作之前,需要旋转(移位)寄存器。
实际上,大多数SIMD指令的向量的指针是向量对齐的,因此没有必要进行上述判断,但是,对于编译器来说,很难确定向量的指针是否是向量对齐的。因此,对指针本身是向量对齐的向量,在编译过程中,产生了很多繁琐而无用的代码,从而增加了代码的复杂性,降低了程序的数据处理能力。
发明内容
为了解决上述现有技术中存在的问题,本发明提供了对源程序进行编译的方法和对源程序进行编译的编译器。
根据本发明的一个方面,提供了一种对源程序进行编译的方法,其特征在于,包括:在对上述源程序进行语法分析时,识别与向量对齐有关的暗示;以及在生成代码时,根据上述识别出的与向量对齐有关的暗示生成简化的代码。
根据本发明的另一个方面,提供了一种对源程序进行编译的编译器,其特征在于,包括:语法分析单元,在对上述源程序进行语法分析时,识别与向量对齐有关的暗示;以及代码生成单元,在生成代码时,根据上述识别出的与向量对齐有关的暗示生成简化的代码。
附图说明
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的,其中:
图1示出了根据本发明的一个实施例的对源程序进行编译的方法的流程图;以及
图2示出了根据本发明的另一个实施例的对源程序进行编译的编译器的方框图。
具体实施方式
下面就结合附图对本发明的各个优选实施例进行详细的说明。
对源程序进行编译的方法
图1示出了根据本发明的一个实施例的对源程序进行编译的方法的流程图。如图1所示,首先,在步骤101,对源程序进行词法分析。具体地,源程序是指利用高级语言编写的任何程序,高级语言与具体的计算机硬件无关,是面向问题的程序设计语言,其表达方式接近于自然语言和数学语言,易于人们接受和掌握。本实施例中,作为源程序的编写语言需要支持SIMD例如GCC(GNU)、Intel/C/C++、IBM XLC、MS Visual C++等等。
在步骤101中,对源程序进行词法分析。作为编译过程的一部分,在词法分析中,构造和分析源程序中的词,例如,标识符、常数、保留字和运算符等,并且把源程序中的词变换为内部表示形式等于定度的整数或整数对,然后按内部表示形式传送给编译程序其余的部分,例如,语法分析等。在本步骤中可以采用现有的和将来的任何方式进行词法分析,本发明对此没有特别限制。
接着,在步骤102,对源程序进行语法分析。作为编译过程的一部分,语法分析是在对源程序完成词法分析后,辨认组成程序的各个语句在语法上的正确性的步骤。对于在分析中发现的语法错误,将以屏幕显示或打印文字等形式给出提示,要求程序员予以修改。
在本实施例中,在对源程序进行语法分析时,识别与向量对齐有关的暗示。上述与向量对齐有关的暗示是由程序员在编写上述源程序时引入的,该暗示用于提示该向量是向量对齐的,从而在源程序的编译过程中,可以明确知道该向量是向量对齐的向量,例如,可以采用修饰符“_vec_align_”的形式来进行暗示。后面将利用一个实例性的例子来进行详细说明。
在步骤102中,将上述识别出的与向量对齐有关的暗示记录下来,以在后续步骤中提供向量是向量对齐的提示。可选地,例如,可以将上述识别出的与向量对齐有关的暗示,作为与向量相关的标识符的属性,记录在符号表中。在源程序的编译过程中,符号表用于记录源程序中的标识符及其各种属性,这些属性可以提供标识符的存储分配信息、类型信息、作用域信息等等。对于过程标识符,还要有参数信息,包括参数的个数和类型、实参和形参的结合方式等等。符号表的结构是一种含有记录的数据结构,通常一个标识符在符号表中占一个记录,记录中除了标识符的名字域之外,还有记录该标识符属性的域。
接着,在步骤103,在语法分析的基础上,对源程序进行语义分析。语义分析用于检查源程序是否包含语义错误,并搜集类型,供后面的代码生成阶段使用,只有语法和语义正确的源程序才可被翻译成目标代码。在本步骤中可以采用现有的和将来的任何方式进行语义分析,本发明对此没有特别限制。
最后,在步骤104,在语义分析的基础上,根据在步骤102中识别出的与向量对齐有关的暗示生成简化的代码。在该步骤中,对于具有与向量对齐有关的暗示的向量,不需要生成现有技术中用于判断该向量是否是向量对齐的代码,也不需要生成用于旋转寄存器的代码,从而极大地简化了生成的代码。
在本实施例中,只需要使用生成的简化代码将具有上述与向量对齐有关的暗示的向量中的操作数直接加载到寄存器中,并对上述加载了操作数的寄存器直接进行操作,从而极大地提高了程序的处理性能。
可选地,在步骤104中生成简化的代码之前,还可以在语义分析的基础上,根据在步骤102中识别出的与向量对齐有关的暗示,生成简化的中间代码。中间代码是一种介于源语言和目标语言之间的中间语言代码。中间代码有多种形式,例如三元式、四元式、逆波兰表示、树型结构等等。
此外,还可以在生成简化的中间代码之后,对生成的简化的中间代码进行加工变换,以在最后阶段能产生出更为高效(例如,省时间和省空间)的目标代码。
此外,可选地,在实施例的对源程序进行编译的方法中,还可以进行出错处理。对源程序进行编译的每一个阶段都会发现源程序的错误,在发现错误之后,一般要对其有一定的处理措施,因而编译还可继续执行,不会一有错误就停止编译工作。例如,在词法分析中,能发现单词拼写错误。在语法分析中,检查单词串是否符合语法的结构规则。在语义分析中,编译程序进一步查出语法上虽正确但含有无意义的操作部分,如两个标识符相加,一个是数组名,一个是过程名,虽然语法上允许,但语义上不允许,各种错误,都应在相应的阶段进行处理。
下面通过实例1和对比实例1进一步描述该实施例的对源程序进行编译的方法。
对比实例1
提供如下源程序进行编译:
Alloc.c
struct data_blk
{
char*ptr;
int size;
int gid;
int pad;
};
struct data_blk_list
{
struct data_blk blks[4];
unsigned int index;
int pad;
};
void alloc_data_block(struct data_blk_list*blk_list,
struct data_blk*blk,int blk_num)
{
*blk=blk_list->blks[blk_list->index];
blk_list->index++;
blk_list->index%=blk_list->blk_num;
}
#spu-gcc-Os-S allow.c
在该源程序中,由于存在向量blk_list和blk,并在编译的过程中,不知道这些向量是否是向量对齐的,因此,必须生成用于判断向量是否是向量对齐的代码,以及用于旋转寄存器的代码,最终生成的代码将占用54个指令。
实例1
提供如下源程序进行编译:
Alloc.c
struct data_blk
{
char*ptr;
int size;
int gid;
int pad;
};
struct data_blk_list
{
struct data_blk blks[4];
unsigned int index;
int pad;
};
void alloc_data_block(struct data_blk_list*_vec_align_blk_list,
strut data_blk*_vec_align_blk)
{
*blk=blk_list->blks[blk_list->index];
blk_list->index++;
blk_list->index=4;
}
#spu-gcc-Os-S allow.c
与对比实例1不同的是,在实例1的源程序中,由程序员引入一个新的修饰符_vec_align_,用于提供与向量对齐有关的暗示。从而在实例1中,对于编译器,向量blk_list和blk都是16字节对齐的,因此,可以将
void alloc_data_block(struct data_blk_list*_vec_align_blk_list,
strut data_blk*_vec_align_blk)
{
*blk=blk_list->blks[blk_list->index];
blk_list->index++;
blk_list->index=4;
}
转变为如下SIMD代码:
void alloc_data_block(vector unsigned int*blk_list,
vector unsigned int*blk)
{
*blk=*(blk_list+spu_extract(blk_list[4],0));
blk_list[4]=spu_and(spu_add(blk_list[4],1),3);
}
因此,不需要生成用于判断向量是否是向量对齐的代码,以及用于旋转寄存器的代码,最终生成的代码将只占用10个指令,从而极大地简化了生成的代码。
通过使用本实施例的对源程序进行编译的方法,利用在源程序中提供的与向量对齐有关的暗示,可以生成简化的目标代码,从而极大地提高了程序的处理能力,节省了时间和空间,并提高了效率。
对源程序进行编译的编译器
在同一发明构思下,图2示出了根据本发明的另一个实施例的对源程序进行编译的编译器的方框图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
如图2所示,本实施例的编译器200包括词法分析单元201,用于对源程序进行词法分析;语法分析单元202,用于对源程序进行语法分析;语义分析单元203,用于对源程序进行语义分析;以及代码生成单元204,用于生成目标代码。
在本实施例中,源程序是指利用高级语言编写的任何程序,高级语言与具体的计算机硬件无关,是面向问题的程序设计语言,其表达方式接近于自然语言和数学语言,易于人们接受和掌握。本实施例中,作为源程序的编写语言需要支持SIMD例如GCC(GNU)、Intel/C/C++、IBM XLC、MS Visual C++等等。
在本实施例中,词法分析单元201对源程序中的标识符、常数、保留字和操作数等各种字符进行自左至右的扫描,将构成源程序中的符号和单词,送给句法分析单元201。在本实施例中可以采用现有的和将来的任何词法分析单元,本发明对此没有特别限制。
语法分析单元202,在词法分析单元201对源程序完成词法分析后,辨认组成程序的各个语句在语法上的正确性。对于在分析中发现的语法错误,将以屏幕显示或打印文字等形式给出提示,要求程序员予以修改。
在本实施例中,在语法分析单元202对源程序进行语法分析时,识别与向量对齐有关的暗示。上述与向量对齐有关的暗示是由程序员在编写上述源程序时引入的,该暗示用于提示该向量是向量对齐的,从而在源程序的编译过程中,可以明确知道该向量是向量对齐的向量,例如,可以采用修饰符“_vec_align_”的形式来进行暗示。具体细节参见上述参考图1的对源程序进行编译的方法实施例中的实例1,在此不再赘述。
在本实施例中,将语法分析单元202识别出的与向量对齐有关的暗示记录下来,以为其它单元提供向量是向量对齐的提示。可选地,例如,可以将上述识别出的与向量对齐有关的暗示,作为与向量相关的标识符的属性,记录在符号表中。在编译器200对源程序进行编译的过程中,符号表用于记录源程序中的标识符及其各种属性,这些属性可以提供标识符的存储分配信息、类型信息、作用域信息等等。对于过程标识符,还要有参数信息,包括参数的个数和类型、实参和形参的结合方式等等。符号表的结构是一种含有记录的数据结构,通常一个标识符在符号表中占一个记录,记录中除了标识符的名字域之外,还有记录该标识符属性的域。
语义分析单元203,在语法分析单元202对源程序进行语法分析的基础上,对源程序进行语义分析。语义分析单元203用于检查源程序是否包含语义错误,并搜集类型,供后面的代码生成阶段使用,只有语法和语义正确的源程序才可被翻译成目标代码。在本实施例中可以采用现有的和将来的任何语义分析单元,本发明对此没有特别限制。
代码生成单元204,在语义分析单元203对源程序进行语义分析的基础上,根据语法分析单元202识别出的与向量对齐有关的暗示生成简化的代码。在代码生成单元204生成代码的过程中,对于具有与向量对齐有关的暗示的向量,不需要生成现有技术中用于判断该向量是否是向量对齐的代码,也不需要生成用于旋转寄存器的代码,从而极大地简化了生成的代码。
在本实施例中,只需要使用生成的简化代码将具有上述与向量对齐有关的暗示的向量中的操作数直接加载到寄存器中,并对上述加载了操作数的寄存器直接进行操作,从而极大地提高了程序的处理性能。
可选地,本实施例的编译器200还可以包括中间代码生成单元,用于在代码生成单元204生成简化的代码之前,在语义分析单元203对源程序进行语义分析的基础上,根据语法分析单元202识别出的与向量对齐有关的暗示,生成简化的中间代码。中间代码是一种介于源语言和目标语言之间的中间语言代码。中间代码有多种形式,例如三元式、四元式、逆波兰表示、树型结构等等。
此外,本实施例的编译器200还可以包括代码优化单元,用于在中间代码生成单元生成简化的中间代码之后,对生成的简化的中间代码进行加工变换,以在最后阶段能产生出更为高效(例如,省时间和省空间)的目标代码。
此外,可选地,本实施例的编译器200还可以包括出错处理单元,用于在实施例的编译器200对源程序进行编译的过程中,进行出错处理。编译器200对源程序进行编译的每一个阶段都会发现源程序的错误,在发现错误之后,一般要对其有一定的处理措施,因而编译还可继续执行,不会一有错误就停止编译工作。例如,在词法分析单元201进行词法分析的过程中,能发现单词拼写错误。在语法分析单元202进行语法分析的过程中,检查单词串是否符合语法的结构规则。在语义分析单元203进行语义分析的过程中,编译程序进一步查出语法上虽正确但含有无意义的操作部分,如两个标识符相加,一个是数组名,一个是过程名,虽然语法上允许,但语义上不允许,各种错误,都应在相应的阶段进行处理。
编译器200的具体编译过程参见上述参考图1的对源程序进行编译的方法的实施例,在此不再赘述。
此外,本实施例的编译器200也可以是在现有编译器的基础进行上述改进而获得,现有编译器的例子包括但不限于:GCC(GNU C编译器)、Intel的C/C++编译器、IBM的XLC编译器、MS的Visual C++编译器等等。
通过使用本实施例的对源程序进行编译的编译器200,利用在源程序中提供的与向量对齐有关的暗示,可以生成简化的目标代码,从而极大地提高了程序的处理能力,节省了时间和空间,并提高了效率。
以上虽然通过一些示例性的实施例对本发明的对源程序进行编译的方法和对源程序进行编译的编译器进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附权利要求为准。
Claims (16)
1.一种对源程序进行编译的方法,其特征在于,包括:
在对上述源程序进行语法分析时,识别与向量对齐有关的暗示;以及
在生成代码时,根据上述识别出的与向量对齐有关的暗示生成简化的代码。
2.根据权利要求1所述的对源程序进行编译的方法,还包括:
记录上述识别出的与向量对齐有关的暗示。
3.根据权利要求2所述的对源程序进行编译的方法,还包括:
将上述识别出的与向量对齐有关的暗示,作为与向量相关的标识符的属性,记录在符号表中。
4.根据权利要求1-3中任意一项所述的对源程序进行编译的方法,其中,上述与向量对齐有关的暗示由程序员在编写上述源程序时引入。
5.根据权利要求1-4中任意一项所述的对源程序进行编译的方法,其中,上述生成的简化代码用于:
将具有上述与向量对齐有关的暗示的向量中的操作数直接加载到寄存器中。
6.根据权利要求5所述的对源程序进行编译的方法,其中,上述生成的简化代码还用于:
对上述加载了操作数的寄存器直接进行操作。
7.根据权利要求1-6中任意一项所述的对源程序进行编译的方法,还包括:
在对上述源程序进行语法分析之前,对上述源程序进行词法分析。
8.根据权利要求1-7中任意一项所述的对源程序进行编译的方法,还包括:
在对上述源程序进行语法分析之后,对上述源程序进行语义分析。
9.一种对源程序进行编译的编译器,其特征在于,包括:
语法分析单元,在对上述源程序进行语法分析时,识别与向量对齐有关的暗示;以及
代码生成单元,在生成代码时,根据上述识别出的与向量对齐有关的暗示生成简化的代码。
10.根据权利要求9所述的对源程序进行编译的编译器,其中,上述识别出的与向量对齐有关的暗示被记录。
11.根据权利要求10所述的对源程序进行编译的编译器,其中,上述识别出的与向量对齐有关的暗示,作为与向量相关的标识符的属性,被记录在符号表中。
12.根据权利要求9-11中任意一项所述的对源程序进行编译的编译器,其中,上述与向量对齐有关的暗示由程序员在编写上述源程序时引入。
13.根据权利要求9-12中任意一项所述的对源程序进行编译的编译器,其中,上述代码生成单元生成的简化代码用于:将具有上述与向量对齐有关的暗示的向量中的操作数直接加载到寄存器中。
14.根据权利要求13所述的对源程序进行编译的编译器,其中,上述代码生成单元生成的简化代码还用于:对上述加载了操作数的寄存器直接进行操作。
15.根据权利要求9-14中任意一项所述的对源程序进行编译的编译器,还包括:
词法分析单元,在对上述源程序进行语法分析之前,对上述源程序进行词法分析。
16.根据权利要求9-15中任意一项所述的对源程序进行编译的编译器,还包括:
语义分析单元,在对上述源程序进行语法分析之后,对上述源程序进行语义分析。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101418560A CN101369233A (zh) | 2007-08-14 | 2007-08-14 | 程序编译方法和编译器 |
US12/184,557 US8276130B2 (en) | 2007-08-14 | 2008-08-01 | Method and compiler of compiling a program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101418560A CN101369233A (zh) | 2007-08-14 | 2007-08-14 | 程序编译方法和编译器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101369233A true CN101369233A (zh) | 2009-02-18 |
Family
ID=40364004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101418560A Pending CN101369233A (zh) | 2007-08-14 | 2007-08-14 | 程序编译方法和编译器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8276130B2 (zh) |
CN (1) | CN101369233A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424101A (zh) * | 2013-09-10 | 2015-03-18 | 华为技术有限公司 | 程序性能干扰模型的确定方法及设备 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
CN109117184A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
CN109388107A (zh) * | 2017-08-10 | 2019-02-26 | 欧姆龙株式会社 | 控制装置 |
CN110704368A (zh) * | 2019-09-25 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于fpga的安全智能合约处理器的高效运算方法及装置 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8375373B2 (en) * | 2010-04-19 | 2013-02-12 | Microsoft Corporation | Intermediate language support for change resilience |
US8490056B2 (en) * | 2010-04-28 | 2013-07-16 | International Business Machines Corporation | Automatic identification of subroutines from test scripts |
US9274772B2 (en) | 2012-08-13 | 2016-03-01 | Microsoft Technology Licensing, Llc. | Compact type layouts |
US8954939B2 (en) | 2012-12-31 | 2015-02-10 | Microsoft Corporation | Extending a development environment |
US9501268B2 (en) * | 2013-12-23 | 2016-11-22 | International Business Machines Corporation | Generating SIMD code from code statements that include non-isomorphic code statements |
CN104503754B (zh) * | 2014-12-16 | 2018-05-11 | 江南大学 | 一种机器人图形化编程系统中编程及编译的设计方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6550059B1 (en) * | 1999-10-04 | 2003-04-15 | Advanced Micro Devices, Inc. | Method for generating optimized vector instructions from high level programming languages |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7243343B2 (en) * | 2001-04-10 | 2007-07-10 | International Business Machines Corporation | Method, compiler and platform independent framework for parsing and generating data structures |
US7890585B2 (en) | 2003-09-03 | 2011-02-15 | Lowe John C | Second person review of email |
US7437719B2 (en) * | 2003-09-30 | 2008-10-14 | Intel Corporation | Combinational approach for developing building blocks of DSP compiler |
US7508985B2 (en) * | 2003-12-10 | 2009-03-24 | International Business Machines Corporation | Pattern-matching system |
US7475392B2 (en) | 2004-06-07 | 2009-01-06 | International Business Machines Corporation | SIMD code generation for loops with mixed data lengths |
US7613676B2 (en) * | 2004-07-27 | 2009-11-03 | Microsoft Corporation | Generating a database model from natural language expressions of business rules |
JP2006107339A (ja) | 2004-10-08 | 2006-04-20 | Matsushita Electric Ind Co Ltd | プログラム処理装置 |
US20060253537A1 (en) | 2005-05-04 | 2006-11-09 | Ragy Thomas | Method and system for providing automated email optimization |
US20070011441A1 (en) | 2005-07-08 | 2007-01-11 | International Business Machines Corporation | Method and system for data-driven runtime alignment operation |
US7840954B2 (en) * | 2005-11-29 | 2010-11-23 | International Business Machines Corporation | Compilation for a SIMD RISC processor |
US20070174825A1 (en) * | 2006-01-25 | 2007-07-26 | Eichenberger Alexandre E | Apparatus and method for optimizing scalar code executed on a SIMD engine by alignment of SIMD slots |
US8954943B2 (en) * | 2006-01-26 | 2015-02-10 | International Business Machines Corporation | Analyze and reduce number of data reordering operations in SIMD code |
US8010953B2 (en) * | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
-
2007
- 2007-08-14 CN CNA2007101418560A patent/CN101369233A/zh active Pending
-
2008
- 2008-08-01 US US12/184,557 patent/US8276130B2/en not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424101A (zh) * | 2013-09-10 | 2015-03-18 | 华为技术有限公司 | 程序性能干扰模型的确定方法及设备 |
US10430312B2 (en) | 2013-09-10 | 2019-10-01 | Huawei Technologies Co., Ltd. | Method and device for determining program performance interference model |
CN104424101B (zh) * | 2013-09-10 | 2017-08-11 | 华为技术有限公司 | 程序性能干扰模型的确定方法及设备 |
CN104750533B (zh) * | 2013-12-31 | 2018-10-19 | 上海东软载波微电子有限公司 | C程序编译方法及编译器 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
CN109388107A (zh) * | 2017-08-10 | 2019-02-26 | 欧姆龙株式会社 | 控制装置 |
CN109388107B (zh) * | 2017-08-10 | 2021-09-21 | 欧姆龙株式会社 | 控制装置 |
CN109117184A (zh) * | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
US11996105B2 (en) | 2018-09-13 | 2024-05-28 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN110704368A (zh) * | 2019-09-25 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 基于fpga的安全智能合约处理器的高效运算方法及装置 |
WO2021057184A1 (zh) * | 2019-09-25 | 2021-04-01 | 支付宝(杭州)信息技术有限公司 | 基于fpga的安全智能合约处理器的高效运算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US8276130B2 (en) | 2012-09-25 |
US20090049431A1 (en) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101369233A (zh) | 程序编译方法和编译器 | |
US8099721B2 (en) | Parsing of declarations in all branches of preprocessor conditionals | |
CN106471476A (zh) | 用于对经优化代码的编辑并继续以及增强的经优化调试的技术 | |
Liao et al. | Semantic-aware automatic parallelization of modern applications using high-level abstractions | |
CN101937343A (zh) | 异构多核虚拟执行环境的后端翻译框架实现的方法 | |
Aho | Compilers: Principles, Techniques and Tools (for VTU) | |
Liao et al. | Extending automatic parallelization to optimize high-level abstractions for multicore | |
US20060130020A1 (en) | Compile time linking via hashing technique | |
Hong et al. | Improving simd parallelism via dynamic binary translation | |
Bysiek et al. | Migrating legacy Fortran to Python while retaining Fortran-level performance through transpilation and type hints | |
Ravipati et al. | Toward the deconstruction of Dyninst | |
Hallahan et al. | G2Q: Haskell constraint solving | |
Olschanowsky et al. | Pir: Pmac's idiom recognizer | |
Paganoni et al. | Verifying functional correctness properties at the level of Java bytecode | |
Liang et al. | Semantics-recovering decompilation through neural machine translation | |
Lopez-Rojas | OMCCp: A MetaModelica Based Parser Generator Applied to Modelica | |
Koes et al. | Programmer specified pointer independence | |
TW200417924A (en) | WIN F-language interpreter | |
Morales et al. | Comparing tag scheme variations using an abstract machine generator | |
Horie et al. | Optimization of X10 programs with ROSE compiler infrastructure | |
Singh | An Empirical Study of Programming Languages from the Point of View of Scientific Computing | |
CN118132090B (zh) | 基于llvm编译器的指令选择优化方法 | |
Villalovos | LLVM IR to SNES-compatible 65c816 Assembly Compiler | |
Perrott et al. | A supercomputer program development system | |
Manilov | Analysis and transformation of legacy code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090218 |