E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
GCC-3.4.6
GCC-3.4.6
源代码学习笔记(17)
2.4.初始化优化参数回到general_init,4264行的add_params把数组lang_independent_params的内容存入数组compiler_params。compiler_params保存编译器的参数及当前值。lang_independent_params由params.def以如下方式展开得到。 1022staticconstparam_infolang_indepe
wuhui_gdnt
·
2010-03-19 11:00
优化
null
basic
Parameters
compiler
编译器
Studying note of
GCC-3.4.6
source (16)
2.3.InitializeRegisterssetsNext,afterinit_ttree,general_initinvokesinit_reg_sets.Formostmachines,certainregistershavespecialusage.Forexample,inx86machine,espalwaysholdstheaddressofstacktop,itcan’tbeus
wuhui_gdnt
·
2010-03-18 15:00
function
Class
constraints
include
float
FP
GCC-3.4.6
源代码学习笔记(16)
2.3.初始化寄存器集接下来,跟着init_ttree,general_init调用init_reg_sets。对于大多数机器,某些寄存器具有特殊的用途。例如,在x86机器上,esp总是保存栈顶的地址,它不能用于传递函数参数。而在函数调用过程中,根据特定的惯例,其他一些寄存器需要被保存及恢复;而其他则不需要。显然这些都是与机器有关的。这里init_reg_sets收集芯片系列的通用信息(不同位的芯
wuhui_gdnt
·
2010-03-18 15:00
Studying note of
GCC-3.4.6
source (15)
2.2.3.1.5.2.2.6. FIELD_DECLofRECORD_TYPEWehaveknownthatFIELD_DECLisusedtorepresentanon-staticdatamember,andthedetailisgiveninfollowingFIELD_DECL[2]² Thesenodesrepresentnon-staticdatamember
wuhui_gdnt
·
2010-03-17 11:00
GCC-3.4.6
源代码学习笔记(15)
2.2.3.1.5.2.2.6. RECORD_TYPE中的FIELD_DECL上面已经提到FIELD_DECL用于表示非静态成员,具体的描述如下:FIELD_DECL[2]² 这些节点表示类的非静态成员。其DECL_SIZE和DECL_ALIGN的行为与VAR_DECL节点的相同。而DECL_FIELD_BITPOS给出了该域使用的第一个比特,它是一个INTEGER_CS
wuhui_gdnt
·
2010-03-17 11:00
struct
tree
layout
Integer
编译器
alignment
Studying note of
GCC-3.4.6
source (14)
2.2.3.1.5.2.2.5. LayoutofUNIONAboveline854,rli->tistreenodeofthetypetobelaidout.,amdcomesathere,fieldmustbeaFIELD_DECL.Ifrli->tisnotaRECORD_TYPE,inC++,itmustanodeforaunion.Ithasdifferentlayoutpo
wuhui_gdnt
·
2010-03-16 12:00
GCC-3.4.6
源代码学习笔记(14)
2.2.3.1.5.2.2.5. UNION的布局在上面854行,rli->t是正在被布局的类的树节点,能到这里,field一定是一个FIELD_DECL。如果rli->t不是一个RECORD_TYPE,在C++里,它一定是一个代表union的节点。它有和class及struct不同的布局方案。 778 staticvoid779 place_union_field(recor
wuhui_gdnt
·
2010-03-16 11:00
user
tree
layout
Integer
alignment
attributes
Studying note of
GCC-3.4.6
source (13)
2.2.3.1.5. Informationofaggregatetype2.2.3.1.5.1. Overview[2]AclasstypeisrepresentedbyeitheraRECORD_TYPEoraUNION_TYPE.AclassdeclaredwiththeuniontagisrepresentedbyaUNION_TYPE,whileclasses
wuhui_gdnt
·
2010-03-10 12:00
GCC-3.4.6
源代码学习笔记(13)
2.2.3.1.5. 聚集类型的信息2.2.3.1.5.1. 概览[2]一个类类型由一个RECORD_TYPE节点或者UNION_TYPE节点来表示。声明为union的类由UNION_TYPE来表示,而声明为struct或者class的类由RECORD_TYPE来表示。你可以使用宏CLASSTYPE_DECLARED_CLASS来辨别特定的类是class还是struct。如果类
wuhui_gdnt
·
2010-03-10 12:00
function
struct
tree
layout
alignment
structure
Studying note of
GCC-3.4.6
source (12)
2.2.InitializehashtablefortypeAfterinitializinghashtableforidentifier,general_initinvokesinit_ttreetoinitializethehashtablefortype. 116 void117 init_ttree(void)
wuhui_gdnt
·
2010-03-09 11:00
vector
tree
table
Integer
reference
Types
GCC-3.4.6
源代码学习笔记(12)
2.2.类型哈希表的初始化完成标识符哈希表的初始化后,general_init调用init_ttree来初始化类型哈希表。 116 void117 init_ttree(void) intree.c118 {11
wuhui_gdnt
·
2010-03-09 11:00
struct
vector
tree
table
reference
Types
Studying note of
GCC-3.4.6
source (11)
2. CompilerinitializationThiscorebeginsinthemainfunctioninfilemain.catYOUR-GCC-SOURCE-DIR/gccdirectory.Thisfunctiondoesnothingbutcallstoplev_main. 4684int4685toplev_main(unsignedintargc,constcha
wuhui_gdnt
·
2010-03-08 13:00
struct
object
tree
Signal
alignment
initialization
GCC-3.4.6
源代码学习笔记(11)
2. 编译器的初始化编译器的核心始于YOUR-GCC-SOURCE-DIR/gcc目录下,文件main.c中的main函数。该函数立即调用函数toplev_main。 4684int4685toplev_main(unsignedintargc,constchar**argv) intoplev.c4686{4687
wuhui_gdnt
·
2010-03-08 12:00
Studying note of
GCC-3.4.6
source (10 cont4)
1.6.3.1.1.2. GettheresultIntherestofint_const_binop,theoperationresultwhichnowaresavedinlowandhi,willbecombinedintoatreeobjectwithcorrespondingfieldsset.Belownotruncifnonzero,indicatesdon’ttrucate
wuhui_gdnt
·
2010-03-05 13:00
tree
Integer
Arrays
compiler
alignment
optimization
Studying note of
GCC-3.4.6
source (10 cont3)
1.6.1.1.1.1.4. AdditionandminusThenforotheroperation,backinint_const_binop. int_const_binop(continue) 1239 casePLUS_EXPR:1240 overflow=add_double(int1l,int1h,int2l,int2h,&low,&hi);
wuhui_gdnt
·
2010-03-05 13:00
Studying note of
GCC-3.4.6
source (10 cont2)
1.6.3.1.1.1.2. RightshiftFortherightshift,itissimilarhandling.Again,paramterllisthelowerpartofthenumberbeingshifted,andhlisthehighpart,whilecountisthebitstoshift.Thenlvandhvholdtheresult.A
wuhui_gdnt
·
2010-03-05 13:00
Studying note of
GCC-3.4.6
source (10 cont1)
1.6.3.CreatenodeforarraytypeWheninvokingbuild_array_type,thesecondparameterindex_typeshouldbenodeofindexcreatedinprevioussector. 3790tree3791build_array_type(treeelt_type,treeindex_type)
wuhui_gdnt
·
2010-03-05 12:00
tree
layout
Integer
Arrays
Build
fold
GCC-3.4.6
源代码学习笔记(10续4)
1.6.3.1.1.2. 获取结果而在int_const_binop的余下部分,计算结果已经存放在low和hi中,这个结果将被合成为相应的树节点对象并检查溢出情况。下面的notrunc如果非零,表明不做值截取,而overflow则记录了计算过程中是否发生溢出,no_overflow如果非零,表明计算不会导致溢出。 int_const_binop(continue) 1331 /*Ifthisis
wuhui_gdnt
·
2010-03-05 12:00
tree
Integer
Arrays
alignment
optimization
Constants
GCC-3.4.6
源代码学习笔记(10续2)
1.6.3.1.1.1.2. 右移右移的操作是类似的。同样在下面的函数中,参数ll是被移位数的低位部分,而hl是高位部分,count则是要移动的位数,必须为正数,计算结果存放在lv和hv中,arith非零指明是进行算术右移,否则为逻辑右移。 428 void429 rshift_double(unsignedHOST_WIDE_INTl1,HOST_WIDE_INTh1,
wuhui_gdnt
·
2010-03-05 12:00
GCC-3.4.6
源代码学习笔记(10续1)
1.6.3.创建数组类型节点当调用build_array_type时,第二个参数index_type应该是由上一节所创建的索引节点。注意C++中没有函数数组类型,因为C++函数拥有常量地址。 3790tree3791build_array_type(treeelt_type,treeindex_type)
wuhui_gdnt
·
2010-03-05 12:00
tree
Integer
Arrays
Build
Constants
fold
Current content index of Study node of
Gcc-3.4.6
source
>>Accessdirectoryofthebackendathere ReferencePreparationbeforegoingaheadSoftwarearchitectureofGCCThefrontend1.Overview 1.1.Treerepresentationinfront-ends1.1.1.Treenodedefinition1.1.2.Identifieroftree
wuhui_gdnt
·
2010-03-05 10:00
[置顶]
GCC-3.4.6
源代码学习笔记 当前目录
>>后端部分目录由此链接进入参考文献准备工作GCC的架构前端1.概览1.1.前端中树的表达形式1.1.1. 树节点的定义1.1.2.tree_code——树节点的ID1.1.3.树节点的内存分配1.1.3.1. 节点大小的确定1.1.3.2. 内存分配1.2.树节点的构造1.2.1. 机器模式的概念[2]1.2.2. 内建类型的树节点1.2.2.1.初始化临时的size_t节点1.2.2.1.1.
wuhui_gdnt
·
2010-03-05 09:00
数据结构
优化
汇编
tree
语言
编译器
Studying note of
GCC-3.4.6
source (10)
1.6.Createnodefortypes–part11.6.1.CreatenodeforfunctiontypesFirst,weseewhatFUNCTION_TYPEis:FUNCTION_TYPE[2]² Usedtorepresentthetypeofnon-memberfunctionsandofstaticmemberfunctions.TheTREE_TYPEgiv
wuhui_gdnt
·
2010-03-04 11:00
function
list
tree
Parameters
alignment
Types
GCC-3.4.6
源代码学习笔记(10)
1.6.为类型创建节点–第一部分1.6.1.创建函数类型的节点首先,看看FUNCTION_TYPE节点是个什么东西:FUNCTION_TYPE[2]² 用于表示普通函数和静态成员函数。域TREE_TYPE给出了函数的返回类型。域TYPE_ARG_TYPES是一个包含实参类型的TREE_LIST。其中每一节点的TREE_VALUE是对应实参的类型,TREE_PURPOSE如果非空,是默认
wuhui_gdnt
·
2010-03-04 11:00
function
list
tree
Integer
Build
Types
Studying note of
GCC-3.4.6
source (9)
1.4.Createnodeforuniaryexpression-build1build1issameasbuild,butonlybuildsforunaryoperators.Saveslionshareofcallstobuild;cutsdownuseofvarargs,whichisexpensiveforRISCmachines. 2411tree2412build1(enumtre
wuhui_gdnt
·
2010-03-02 12:00
function
tree
Integer
Build
reference
alignment
GCC-3.4.6
源代码学习笔记(9)
1.4.为一元表达式创建节点函数build1类似于build,但用于一元操作符。它用于代替相当一部分的build调用。减少对于RISC机器来说相当昂贵的可变参量的使用。 2411tree2412build1(enumtree_codecode,treetype,treenode) intree.c2413{2
wuhui_gdnt
·
2010-03-02 12:00
Studying note of
GCC-3.4.6
source (8)
1.3.Createnodesfornon-unaryexpressionbuildcanbeusedtocreatetreenodeforexpression.Butitcanonlyacceptnodesofexpression,andcomposesthemintoamorecomplexone.Itcan’tbeusedtocreatethefirstlevelexpression(tha
wuhui_gdnt
·
2010-03-01 11:00
GCC-3.4.6
源代码学习笔记(8)
1.3.为非一元表达式创建节点函数build可被用于为表达式创建节点。但它只接受表达式作为参数,把它们合成为更为复杂的表达式。它不可以被用于创建第一级的表达式(也就是由解析器解析出的语法成分,合成出表达式。这些步骤需要远为复杂的函数来处理,在后面我们可以看到一些代码片断)。尽管如此,build还是被广泛使用,因为在C/C++程序中,表达式的表现力在于它的嵌套能力及它能出现的地方。把简单表达式节点,
wuhui_gdnt
·
2010-03-01 11:00
Studying note of
GCC-3.4.6
source (7)
1.2.4.CreatenodeforaddressconceptInC++,conceptofpointer,reference,andaddressareexchangableatcertainlevel.Thelangauageallowstomanipulatethecontentoftheaddressdirectlyviapointerorreference,andtheinvocat
wuhui_gdnt
·
2010-02-26 11:00
function
tree
Build
reference
alignment
attributes
GCC-3.4.6
源代码学习笔记(7)
1.2.4.与地址相关节点的构造在C++中,指针、引用和地址在一定程度上可以混用。语言允许通过指针或者引用直接改变地址所在的内容。而函数调用,事实上是通过跳转到相应的地址来实现。另外在语言中,数组名也代表数组的首地址。因此,编译器可能需要首先创建与地址相关的节点,再由这个节点出发构建其它节点。比如,构建函数或数组节点。1.2.4.1. 指针类型节点的构造1.2.4.1.1.
wuhui_gdnt
·
2010-02-26 11:00
vector
tree
layout
Build
reference
alignment
Studying note of
GCC-3.4.6
source (6)
1.2.3.CreatenodeforrealconstantNodeinGCCtorepresentrealconstantistree_real_cstasbelow.1.2.3.1. Nodeoftree_real_cst 702 structtree_real_cstGTY(())
wuhui_gdnt
·
2010-02-25 11:00
struct
tree
Integer
Build
transformation
structure
GCC-3.4.6
源代码学习笔记(6)
1.2.3.创建浮点常量节点在GCC中表示浮点常量的节点是下面所示的tree_real_cst。1.2.3.1. tree_real_cst节点 702 structtree_real_cstGTY(()) intree.h703 {704
wuhui_gdnt
·
2010-02-25 11:00
struct
tree
Integer
Build
float
structure
Studying note of
GCC-3.4.6
source (5)
1.2.2.CreatenodeforinternaltypesForinternaltypesofthelanguage,forexample,int,unsignedshortinC/C++,thecompilerwillcreatenodesforthesetypesfirstwhenitstartsup.1.2.2.1. Initializetemperarynodes
wuhui_gdnt
·
2010-02-24 12:00
tree
layout
Integer
Build
alignment
Types
GCC-3.4.6
源代码学习笔记(5)
1.2.2.内建类型的树节点对于语言中的内建类型,例如,C/C++中的int,unsignedshort等,编译器在启动时便会为这些类型创建节点。1.2.2.1. 初始化临时的size_t节点在创建内建类型的节点前,先要创建临时的size_t节点(一个用作size_t,另一个用作bitsize_t。size_t是sizeof的返回类型,bitsize_t由前端使用),它们将被用
wuhui_gdnt
·
2010-02-24 11:00
Studying note of
GCC-3.4.6
source (4)
1.2.BuildingtreenodesAbovemake_nodegivesthetooltocreatenodesforcertaintreecode.However,thisfacilityisquiteprimitive.GCCalsodefinesaseriesfunctionstocreatenodesgroupforstatement,expression,etc.Wejustse
wuhui_gdnt
·
2010-02-23 11:00
tree
Integer
byte
pascal
compiler
debugging
GCC-3.4.6
源代码学习笔记(4)
1.2.树节点的构造上面make_node提供了构造树节点的方法,但它比较初级,节点由0填充。为了更好地为表达式,语句等语法成分构造树节点,GCC定义了一系列函数。我们先看一部分。1.2.2.机器模式的概念[2]机器模式描述了一个数据对象的大小和它的表示方式。在GCC中,机器模式由定义在machmode.def文件中的枚举类型enummachine_mode来表示(准确地说,machine_mod
wuhui_gdnt
·
2010-02-23 11:00
gcc
Integer
float
pascal
编译器
debugging
GCC-3.4.6
源代码学习笔记(3)
1.1.3.树节点的内存分配1.1.3.1. 节点大小的确定树节点由下面的make_node函数来分配。函数中的参数code,在上面的表中给出,注意它也是由.def文件定义的。 202 tree203 make_node(enumtree_codecode)
wuhui_gdnt
·
2010-02-22 11:00
struct
vector
tree
Class
attributes
statistics
Studying note of
GCC-3.4.6
source (2)
1.1.1.Identifieroftreenode-tree_codeWithinthedefinitionoftree_node,itemsliketree_type,tree_decletc,areusedforthesemanticsingrediences,forexample,tree_typeisusedfortypedefinition,andtype_declisusedford
wuhui_gdnt
·
2010-02-21 15:00
Studying note of
GCC-3.4.6
source (1)
About4yearsago,IjoinedGDNT–thecoventureofNortelinChinaandworkedinprojectofRadioaccessnetworkof3GUMTS;whereIusedGCCfirsttime.AtthattimeNortelwidelyusedGCCastheofficialcompilerforitsgiantprojectofUMTS,C
wuhui_gdnt
·
2010-02-21 15:00
struct
tree
gcc
compiler
deprecated
preprocessor
GCC-3.4.6
源代码学习笔记(2)
1.1.1.tree_code——树节点的ID在tree_node的定义中,结构体,象tree_type,tree_decl等,用于代表相应的语法成分。比如,tree_type用于类的定义,而type_decl用于声明。但如果需要进一步分别,比如tree_decl节点为何种声明,则我们需要用到在tree_node中的另一个位。这就是在tree_common定义中,第134行的code。 31
wuhui_gdnt
·
2010-02-21 14:00
function
tree
gcc
Integer
Class
pascal
GCC-3.4.6
源代码学习笔记(1)
大约4年前,我加入了GDNT-北电网络在中国的合资企业,参与3GUMTS无线接入网的研发工作。与GCC有了第一次亲密的接触(之前使用的是MS的VC)。彼时,北电在其诸如,UMTS、CDMA、及自行开发的众多工具等项目中(此后,在4G项目,Wimax及Lte中),将GCC作为标准编译器来使用。每周我都需要进行数次的loadbuild,编译出load文件进行测试,以验证我对一些bug的修正代码。每次l
wuhui_gdnt
·
2010-02-21 14:00
struct
vector
gcc
tree
Constructor
deprecated
GCC 编译错误集
/
gcc-3.4.6
/configure--prefix=/opt/build/gcc3--enable-languages=c,c++,d Error: .
fox000002
·
2009-04-12 19:00
软件安装-gcc安装
SPARC/Solaris 10 或x86/Solaris 10,看你的系统是SPARC 还是X86而定,再选
gcc
yangzhao
·
2008-05-03 17:00
C++
c
C#
gcc
Solaris
[转 载]建立交叉编译器 for arm (binutils-2.17
gcc-3.4.6
glibc-2.3.6)
交叉编译器建立过程 准备工作下载一下源码包:可以到ftp://ftp.gnu.org下载源码包binutils-2.17.tar.gzgcc-3.4.6.tar.gzglibc-2.3.6.tar.gzglibc-linuxthreads-2.3.6.tar.gz或者到ftp://sourceware.org/pub/下载。将源码包放入/home/zht/cross-compiler/build-
leibniz_zsu
·
2007-10-23 15:00
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他