当前位置:首页 » 编程软件 » 计算机编译器硬件

计算机编译器硬件

发布时间: 2022-07-05 19:06:27

① 什么是编译

编译器

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

[编辑]编译器工作方法
首先编译器进行语法分析,也就是要把那些字符串分离出来。然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。最后生成的是目标文件,我们也称为obj文件。再经过链接器的链接就可以生成最后的可执行代码了。有些时候我们需要把多个文件产生的目标文件进行链接,产生最后的代码。我们把一过程称为交叉链接。

一个现代编译器的主要工作流程如下:

* 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)

工作原理

编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)

作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)

前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。

编译器后端(backend)

编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

② 编译器的种类

编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。 编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

③ 计算机都有编译器和解释器吗

编译器是程序员开发程序用的~!
而解释器则是执行脚本程序用到~
编译器和解释器都是软件,非硬件``
而计算机上通常在系统中已装有某些脚本或批处理的解释器。
编译器大多数就没有内置安装了。

④ 计算机的硬件和软件有哪些

硬件
“计算机硬件”的简称。与“软件”相对。电子计算机系统中所有实体部件和设备的统称。从基本结构上来讲,电脑可以分为五大部分:运算器、存储器、控制器、输入设备、输出设备等。

一般我们看到的电脑都是由:主机(主要部分)、输出设备(显示器)、输入设备(键盘和鼠标)三大件组成。 而主机是电脑的主体 ,在主机箱中有:主板、CPU、内存、电源、显卡、声卡、网卡、硬盘、软驱、光驱等硬件。其中,主板、CPU、内存、电源、显卡、硬盘是必须的,只要主机工作,这几样缺一不可。
软件
目录·系统软件
·应用软件
·操作系统软件
·软件开发

软件[software](中国大陆及香港用语,台湾作软体)是一系列按照特定顺序组织的计算机数据和指令的集合,按照特定顺序组织的电脑数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中介软件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

软件并不只是包括可以在计算机上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。

软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。

系统软件

系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。

一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。

应用软件

应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。

较常见的有
文字处理软件 如Office、WPS等
信息管理软件 如Assces数据库
辅助设计软件 如AutoCAD、Photoshop
实时控制软件
教育与娱乐软件
图形图像 coreldraw ,painter,GIMP(linux下),3DS MAX,MAYA,softimage|xsi,lightwave,cineme 4d,Houdini
后期合成软件 after effects,combustion,digital fusion,shake,flame
杀毒软件 如卡巴斯基、瑞星等

操作系统软件

操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统交互的操作接口。

⑤ 编译器领域需要懂硬件吗

懂的。
编译原理是研究各种语言转换(不够专业)为机器语言的过程中的各种理论。编译原理是将计算机语言转化为可以在计算机硬件上直接运行的机器语言,是翻译语言的一种。
编译原理是研究各种语言转换(不够专业)为机器语言的过程中的各种理论。编译原理是将计算机语言转化为可以在计算机硬件上直接运行的机器语言,是翻译语言的一种。

⑥ 硬件与内核的关系,或者说 硬件与编译器的关系

操作系统主要分为两部分:内核(Kernel),壳(Shell)。

顾名思义,内核主要实现计算机硬件与壳之间的信息传递与沟通,是一个操作系统最核心技术的体现;壳主要负责传递内核与应用程序之间的信息交流,将内核与软件的内外部命令用利用底层语言进行相互转译,实现一个个的操作请求。对于Windows系统来说,内核与壳之间相互联系,就如同一个只会外语的洋老板与中国翻译的位置,是一个管理与被管理的关系;对于Unix与Linux来说,由于将内核与壳完全分离,就如同一个厂商与一个代理商之间的关系,双方互利协作,厂商可以随时取消代理商的代理权来另找代理,而代理同时也可以不需要这个代理权。

WINDOWS操作系统大家应该都不会陌生,这是全球最大的操作系统开发商——Microsoft公司开发的。其服务器操作系统重要版本WINNT 4.0 Server、Win2000/Advanced Server、Win2003/Advanced Server,也支撑起目前市面上应用最多的服务器操作系统——Windows服务器操作系统派应用。

NetWare操作系统对现在一些IT圈里的朋友可能就比较陌生,由于种种原因,它的市场占有率已经非常局限,主要应用在某些特定的行业中。也就是因为此,在很多朋友在划分操作系统派系的时候,去除了NETWARE的代表权。其实,如果80年代前出生的老IT,对于NetWare这个名词就会异常熟悉了,因为在当初各种设备和网络都比较落后的年代,NetWare在局域网应用中占据着绝对的高额市场;而就算是目前,在一些特定行业和事业单位中,NetWare优秀的批处理功能和安全、稳定的系统性能也有很大的生存空间。NetWare目前常用的版本主要有Novell的3.11、3.12、4.10、5.0等中英文版。

Unix操作系统由AT&T公司和SCO公司共同推出,主要支持大型的文件系统服务、数据服务等应用。由于一些出众的服务器厂商生产的高端服务器产品中甚至只支持Unix操作系统,因而在很多人的眼中,Unix甚至成为高端操作系统的代名词。目前市面上流传的主要有SCO SVR、BSD Unix、SUN Solaris、IBM-AIX 。

Linux操作系统是国外几位IT前辈,在Posix和Unix基础上开发出来的,支持多用户、多任务、多线程、多CPU。Linux开放源代码政策,使得基于其平台的开发与使用无须支付任何单位和个人的版权费用,成为后来很多操作系统厂家创业的基石,同时也成为目前国内外很多保密机构服务器操作系统采购的首选。目前国内主流市场中使用的主要有Novell的中文版Suse Linux 9.0、小红帽系列、红旗Linux系列等。

⑦ 计算机硬件和软件的区别是什么

一、功能不同

1、计算机硬件:输入并存储程序和数据,以及执行程序把数据加工成可以利用的形式。

2、计算机软件:是用户与硬件之间的接口界面,用户主要是通过软件与计算机进行交流。

二、特点不同

1、计算机硬件:按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。

2、计算机软件:计算机软件多用于某种特定目的,如控制一定生产过程,使计算机完成某些工作;而文学作品则是为了阅读欣赏,满足人们精神文化生活需要;可援引多种法律保护,文字作品则只能援引着作权法。

三、组成不同

1、计算机硬件:由电子,机械和光电元件等组成的各种物理装置。

2、计算机软件:计算机系统中的程序及其文档。

⑧ 请问程序编译器是硬件还是软件

编译器是一种一应用软件,,你如编程技术好的话也可自己编一个自己专用的编译器,,,,,当然你既然在问这种问题就说明你没有这能力,,,

⑨ 什么是计算机软件;什么是计算机硬件

硬件你看的到摸的着的,就是平常说的主板,显示卡之类的,软件是人编写的指令,它以硬件为载体来对我们传达信息。比如我们用的QQ,和windows操作系统。 电脑软件,是人们为了告诉电脑要做什么事而编写的,电脑能够理解的一串指令,有时也叫代码、程序。 根据功能的不同,电脑软件可以粗略地分成四个层次。最贴近电脑硬件的是一些小巧的软件。它们实现一些最基本的功能,通常“固化”在只读存储器芯片中,因此称为固件。系统软件包括操作系统和编译器软件等。系统软件和硬件一起提供一个“平台”。它们管理和优化电脑硬件资源的使用。常见的中间件包括数据库和万维网服务器等,它们在应用软件和平台之间建立一种桥梁。应用软件种类最多,包括办公软件、电子商务软件、通信软件、行业软件,游戏软件等等。 电脑软件都是用各种电脑语言(也叫程序设计语言)编写的。最底层的叫机器语言,它由一些0和1组成,可以被某种电脑直接理解,但人就很难理解。上面一层叫汇编语言,它只能由某种电脑的汇编器软件翻译成机器语言程序,才能执行。人能够勉强理解汇编语言。人常用的语言是更上一层的高级语言,比如C, Java, Fortran, BASIC。这些语言编写的程序一般都能在多种电脑上运行,但必须先由一个叫作编译器或者是解释器的软件将高级语言程序翻译成特定的机器语言程序。编写电脑软件的人员叫程序设计员、程序员、编程人员。他们当中的高手有时也自称为黑客。 由于机器语言程序是由一些0和1组成的,它又被称为二进制代码。汇编语言和高级语言程序也被称为源码。在实际工作中,一般来讲,编程人员必须要有源码才能理解和修改一个程序。很多软件厂家只出售二进制代码。近年来,国际上开始流行一种趋势,即将软件的源码公开,供全世界的编程人员共享。这叫“开放源码运动”。 软件是什么?硬件是什么?软、硬件之间的区别 ? 硬件就是实际的硬件设备如:内存条、CPU、显示器、……。 软件就是我们平常用的如瑞星、OFFICE、等等。 没有软件的计算机,也叫“裸机”,可以说是废铁一堆。 软件可分为专用软件和通用软件。通用软件和操作系统,专用的软件如PS,DW。 1、软件:其实很好理解,就如同是一个人思想和灵魂。要是没有它的话,那么再好的电脑也没什么太大的用处,放在家里就等于是废铁。 2、硬件:它如同是一个人的身躯。如果身体也没了,再好创意和思想也无法最大限度的发挥,办起事情来总有不便。 总结:对于电脑来说,软件是思想和灵魂,硬件就是身躯。如同一个人既要有健康的思想,也要有强壮的身躯。所以它们之间不可分割的一个整体。 二、补丁只是系统程序和应用程序的升级补充,是用来安装后防止漏洞,增加安全性的,不是拿来使用

⑩ 计算机编译器是什么,怎么用

计算机编译器可以说是计算机软件的生产工具,几乎所有的软件都是由编译器编译而成的。用的方法有两种,第一个种是集成在了开发环境里,第二种是用命令行编译。

热点内容
魔兽世界自动钓鱼脚本 发布:2024-05-19 06:43:07 浏览:494
cbs加密 发布:2024-05-19 06:29:56 浏览:200
ssis存储过程 发布:2024-05-19 06:21:31 浏览:630
怎样删除小视频文件夹 发布:2024-05-19 05:49:29 浏览:589
开启php短标签 发布:2024-05-19 05:44:12 浏览:473
android各国语言 发布:2024-05-19 05:42:54 浏览:247
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:907
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:318
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:204
asp编程工具 发布:2024-05-19 05:20:36 浏览:143