1.简单介绍:编译器是将一种语言翻译成还有一种语言的程序。编译器将源程序的代码作为输出,从而产生用目标语言编写的等价程序。比如源码为C/C++等高级语言,那么目标语言就是目标机器的机器代码。也就是能够直接执行的机器代码(各种二进制)。

以下就是一个编译过程的简单样例:

x=2 (高级语言)
MOV x,2 (汇编语言)
C7 06 0000 0002 (机器代码)

2.相关程序

a.解释程序(interpreter):它会马上运行程序而不是编译完毕后在运行,典型的解释程序有Java,Lisp等

b.汇编程序(assembler):它将汇编语言翻译成机器代码

c.连接程序(linker):编译器和汇编程序常常以来其它的头文件或者资源,连接程序将他们收集到一个可运行文件里

d.装载程序(loader):处理全部的与基地址和起始地址相关的可重定位地址

e.编辑器(editor):编写源码

f.调试程序(debugger):调试程序用的

g.描写叙述器(profiler):描写叙述程序的执行时间等信息

h.项目管理器(project manager):用于项目管理的程序

3.编译的一般步骤

以字符流的形式扫描程序,进行词法分析。然后进行语法分析,语义分析,源码优化,代码生成。目标代码优化等一般性步骤(之后会重点分析)

4.主要数据结构

记号(token)。语法树,符号表,常数表,中间代码,暂时文件

5.TINY语言简单介绍

a.语句序列用分号隔开

b.全部变量都是整形变量,且不须要声明

c.仅仅有两个控制语句。if和repeat

d.if推断语句必须以end结束,且有可选的else语句

e.read和write完毕输入输出

f.花括号表示凝视,但不同意嵌套凝视

g.有<和=两个比較运算符

h.有+、-、*、/简单运算符

以下来看一个简单样例:

{ Sample program in TINY language - compute factorial } 

read x;{input an integer} 
if 0<x then {don't compute if x<=0} 
  fact := 1; 
  repeat 
    fact := fact*x。
    x := x-1 
  until x = 0;
   write fact{output factorial of x}
end

以后会对TINY语言编译器进行具体介绍的



最新文章

  1. 紫書_例5-10 UVa207
  2. 基于Ruby的watir-webdriver自动化测试方案与实施(二)
  3. DEDECMS之一 安装配置
  4. PHP 调试用函数
  5. cuffdiff 和 edgeR 对差异表达基因的描述
  6. JS/JQuery控制图片宽度
  7. POJ 3468 A Simple Problem with Integers
  8. JS的this本质
  9. Android开发周报:Android L默认加密用户数据
  10. ubuntu下使用自带的openJDK查看java源码
  11. 【足迹C++primer】40、动态数组
  12. nginx.conf文件
  13. C游新官网总结
  14. asp.net中的CheckBox控件的使用
  15. Jmeter 聚合报告---测试结果分析
  16. nuxt跨域
  17. quicktime player录屏没有声音的解决方法
  18. js中的json的小例子
  19. Codeforces 909C - Python Indentation
  20. 【Codeforces 498B】 B. Name That Tune (概率DP)

热门文章

  1. PyCharm 安装配置使用
  2. 安装python 2.7
  3. Linux一些防攻击策略
  4. Java中获取当前时间并格式化
  5. mysql之select,insert,delete,update
  6. iOS博客列表
  7. 主机屋 ubuntu 14安装nginx
  8. MFC中 CDateTimeCtrl 自定义日期显示格式
  9. Linux:和任务执行相关的 【批命令执行 runparts 】命令
  10. ArcGIS教程:面积制表