
编译器
文章平均质量分 80
yyt7529
这个作者很懒,什么都没留下…
展开
-
动态链接
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。可执行程序根据更新后的库信息调用库中转载 2009-07-22 14:32:00 · 622 阅读 · 0 评论 -
利用Yacc生成LR语法分析器的关键点剖析
<br />实际上利用Yacc生成LR语法分析器(一般是Look ahead分析方法)还是比较简单的,而且写一个文法满足Yacc的要求也非常容易,主要的工作量体现在一个产生式被识别后的动作如何编写,尤其是有时候需要在一个产生式中嵌入一个动作,这个动作产生的时机是什么,产生这个动作时当前的token是什么一定要非常清楚,通过这几天的研究,基本上对这个问题已经有了一个了解,这里做一些总结。<br /> 首先,Yacc中判断如果DFA的当前状态中的某一项S->a.发生归约时,执行产生式S->a后面带的动作。但是转载 2010-10-08 13:49:00 · 1894 阅读 · 0 评论 -
VC++环境下的LR语法分析器实现
<br />一、引言<br />编译程序能够将软件语言书写的各种程序处理成可在计算机上执行的程序,是重要的系统软件。在编译系统中,语法分析阶段是整个编译过程中继词法分析后的第二个阶段。语法分析的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。按照建立语法分析树的方法,语法分析分为两类:自上而下分析和自下而上分析。本文讨论的LR分析法属于自下而上的方法。<br />二、语法规则的表示<br />语法规则是由上下文无关文法进行定义的。例如一个语言可用一系列的产生式定义:<br转载 2010-10-08 14:02:00 · 5575 阅读 · 0 评论 -
vc++做词法分析器
<br />词:变量var,类型,int ,real(实数)bool(布尔) while,do,begin,if,then,else, 将关键字放在一个表中,有的话,不添加,否则添加算符,有+/*/,这也要在符号表中,都要反回一个记号:addop,mulop 界符:( ) ; , : := 关系操作符:>=,<=,!=,<,>,== id:字开头的字符数字串无符号int 型的关键字用空格隔开,其它可以有也可以没有在扫描时:注释有{},{}不能有{},可以有一行或多行。功能:删除一个多余字符,插入一个字符。<转载 2010-10-08 13:45:00 · 1017 阅读 · 0 评论 -
Lex和yacc工具介绍
<br />在编译过程中,词法分析和语法分析是两个重要阶段。lex和yacc是Unix环境下非常著名的两个工具,可以生成分别完成词法分析和语法分析功能 的C代码。在学习编译原理过程中,可以善加利用这两个工具,加深对两个阶段的理解。在平时的工作中,这两个工具也会起到重要的作用。 词法分词器生成工具lex<br />Lex是LEXical compiler的缩写,主要功能是生成一个词法分析器(scanner)的C源码。描述词法分析器的文件,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生转载 2010-10-08 13:37:00 · 1145 阅读 · 0 评论 -
C语言的lex和yacc工具说明
Lex工具 ------- Lex工具是一种词法分析程序生成器,它可以根据词法规则说明书的要求来生成单词识别程序,由该程序识别出输入文本中的各个单词。 1、lex程序的结构 -定义部分 -规则部分 -用户子程序部分 其中规则部分是必须的,定义和用户子程序部分是任选的。 (1) 定义部分 定义部分起始于"%{"符号,终止于"%}"符号,其间可以是包括include语句、声明语句在内的C语句。 %{ #include "stdio.h" #includ转载 2010-07-01 12:45:00 · 1134 阅读 · 0 评论 -
VC 编译选项
-优化- /O1 最小化空间 minimize space /Op[-] 改善浮点数一致性 improve floating-pt consistency /O2 最大化速度 maximize speed /Os 优选代码空间 favor code space /Oa 假设没有别名 assume no aliasing /Ot 优选代码速度 favor code speed /Ob 内联展开原创 2009-06-24 16:17:00 · 564 阅读 · 0 评论 -
VC链接选项
LINK 是将通用对象文件格式 (COFF) 对象文件和库链接起来以创建可执行 (.exe) 文件或动态链接库 (DLL) 的工具。下表是 LINK.exe 选项的综合列表。本节还包含关于以下主题的信息:编译器控制的 LINK 选项LINK 输入文件LINK 输出保留字在命令行上指定的链接器选项不区分大小写:/base 和 /BASE 的含义相同。可以通过 commen转载 2009-06-24 16:30:00 · 1669 阅读 · 0 评论 -
GCC编译选项
gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] 参数详解-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 eg: gcc -c hello.c 生成转载 2009-06-24 16:34:00 · 686 阅读 · 0 评论 -
关于“#ifdef __cplusplus”
时常在cpp的代码之中看到这样的代码:#ifdef __cplusplus extern "C" { #endif//一段代码#ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern原创 2009-08-03 15:09:00 · 657 阅读 · 1 评论 -
静态链接和动态链接区别
一、静态链接 链接程序搜索一个或者多个库文件(标准库.lib),直到在某个库中找到了含有所引用函数的对象模块,然后链接程序把这个对象模块拷贝到结果可执行文件(.exe)中。链接程序维护对该函数的所有引用,使它们指向该程序中现在含有该函数拷贝的地方。 二、动态链接 链接程序也是搜索一个或者多个库文件(输入库.lib),当在某个库中找到了所引用函转载 2009-07-22 14:34:00 · 854 阅读 · 0 评论 -
RVDS与MDK-ARM比较
<br />RVDS与MDK-ARM比较 <br />1、RealView Microcontroller Development Kit(RealView MDK)开发套件--中国版<br />RealView MDK开发工具源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,包括µVision3集成开发环境与 RealView编译器。支持ARM7、ARM9和最新的Cor原创 2011-01-29 16:53:00 · 1359 阅读 · 0 评论