当前位置:首页 » 编程软件 » 硬件编译的原理

硬件编译的原理

发布时间: 2022-04-15 05:47:06

‘壹’ 编译原理好学吗是偏硬件的吗

我认为编译原理~与大学计算机专业课程的其他科目比起来的话相对较难
真正开发编译器的人的确需要丰富的硬件的知识。
但不能说偏硬件,而且国内编译原理教材着重理论,常常可以忽略对硬件的认识
总的来说,楼主为了考试学编译原理的话,比较难啊,没有偏硬件的说
如果为了开发编译器(尤其静态编译器)的话,难度大 ,需要i强大硬件知识

‘贰’ 简要说明编译程序与数据库管理系统的工作原理.

编译程序是高级语言发展的一个中间产物,在计算机初期,人类是使用汇编语言来进行程序设计,汇编语言是一种低级语言,能直接与底层的硬件打交道,通过二进制直接传输指令,完成各种命令。数据库管理系统是软件商业化之后,针对数据存储管理上的一个应用系统,主流的有server SQL oracle,sybase,DB2 等一线厂商的强大数据库管理系统。数据库管理系统主要完成日常数据的写入,读写,管理,监控等各项数据的处理!

‘叁’ 硬件编程

那你就学linux或windows 驱动编程,但不会有人告诉你这个硬件那个硬件的工作原理和控制方法。除了已有的源代码,想了解更多的就自己反汇编,汇编这时候就有用。写驱动,用c语言,c语言这时候就有用。如果用类方式来写,c++这时候就有用。设计文件系统要懂更多的理论,谁说学了这些没用?

应该从小事做起。比如bios中断10的工作原理,你知道吗?别人就是一句一句的去读反汇编的代码,没有经年的时间,不会成为高手。如何用ioctl去控制硬件,估计你现在也做不到。cpu io的工作秘密,隐藏在成千零散的资料里,不学点外文你又怎么知道?

要提高,非得有目的的编程不可,非得系统的学习不可,指望这里一点,那里一点,不会有多大进步。

‘肆’ 编译原理学了有什么用

对大多数人来说,学过编译原理,应该可以知道对于很多代码的优化,编译器其实可以做好,不需要自己写代码的时候杞人忧天。在通用、局部的优化上,甚至编译器往往做得比程序员好。

大概率会意识到编译原理背后的故事,也许会沉迷在某个方向,也许还会乐于看一些奇妙的parser构建方式。

大概还可能会去学习类型系统,发现形式化的故事似乎在很多方面都有对应的版本,而后,他们也许会尝试走向研究,去挑战目前都没有好好解决的代码优化问题,也许会走向应用,用起LLVM,在上面加个target,支持一些新硬件,做个新语言的前端等。

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。

编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。

编译可以分为五个基本步骤:词法分析、语法分析、语义分析及中间代码的生成、优化、目标代码的生成。这是每个编译器都必须的基本步骤和流程, 从源头输入高级语言源程序输出目标语言代码。

1、词法分析

词法分析器是通过词法分析程序对构成源程序的字符串从左到右的扫描, 逐个字符地读, 识别出每个单词符号, 识别出的符号一般以二元式形式输出, 即包含符号种类的编码和该符号的值。

词法分析器一般以函数的形式存在, 供语法分析器调用。当然也可以一个独立的词法分析器程序存在。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。

2、语法分析

语法分析是编译过程的第二个阶段。这阶段的任务是在词法分析的基础上将识别出的单词符号序列组合成各类语法短语, 如“语句”, “表达式”等.语法分析程序的主要步骤是判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。

而一个语法规则又称为文法, 乔姆斯基将文法根据施加不同的限制分为0型、1型、2型、3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法, 限制条件依次递增。

3、语义分析

词法分析注重的是每个单词是否合法, 以及这个单词属于语言中的哪些部分。语法分析的上下文无关文法注重的是输入语句是否可以依据文法匹配产生式。

那么, 语义分析就是要了解各个语法单位之间的关系是否合法。实际应用中就是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查等。

4、中间代码生成与优化

在进行了语法分析和语义分析阶段的工作之后, 有的编译程序将源程序变成一种内部表示形式, 这种内部表示形式叫做中间语言或中间表示或中间代码。

所谓“中间代码”是一种结构简单、含义明确的记号系统, 这种记号系统复杂性介于源程序语言和机器语言之间, 容易将它翻译成目标代码。另外, 还可以在中间代码一级进行与机器无关的优化。

5、目标代码的生成

根据优化后的中间代码, 可生成有效的目标代码。而通常编译器将其翻译为汇编代码, 此时还需要将汇编代码经汇编器汇编为目标机器的机器语言。

6、出错处理

编译的各个阶段都有可能发现源码中的错误, 尤其是语法分析阶段可能会发现大量的错误, 因此编译器需要做出错处理, 报告错误类型及错误位置等信息。

‘伍’ 编程和硬件什么关系

编程是个统称。
总的来说,编程的定义就是通过专门的语法结构组成指令去完成一个目标。
最底层的机器代码就是由0和1组成的二进制代码。简单的去理解,这种二进制方式的实现其实是利用了硅的半导体特性,使得一个半导体晶体管能输出代表0的电压和代表1的电压。许许多多的晶体管按照设计好的电路连接起来,就能成为各种芯片了,比如cpu芯片就是工艺最复杂的一种硅半导体集成电路。目前,还没有更好的能替代硅来实现2进制集成电路的材料,所以现在的芯片都是硅芯片。

0和1组成的二进制代码没有任何可读性,是难以被人为编程的,所以在硬件界面之上,又架构了一层编译机制,就是汇编语言,其中规定了基本语法格式,让编程人员可以通过指令访问芯片电路中各种运算功能。汇编语言就是直接对芯片进行编程,比如机器人工程就属于这类。这是最底层的编程,俗称低级编程。
但是汇编语言也比较生涩,都是基于硬件的基本操作,要完成稍微大一点的任务就要做非常繁杂的编译工作。于是人们又开发出再高一级别的编译架构,于是有了C语言这样的基本的编程语言。这一层级别的语言就非常好懂了,编程人员可以抛开繁杂的硬件结构,专心去设计针对应用层面的结构了。

现在更多高级的语言诸如C++, C#,JAVA 等都已经广泛应用。可以说现在的软件编程跟硬件的关联已经越来越远,但本质上又是密不可分的。就像现在的人开车,只管握方向盘踩油刹车,一般都不会去了解发动机的基本原理了,也没必要去了解。

‘陆’ C语言编译原理是什么

编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。

1、预处理阶段:

主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)

2、汇编阶段:

插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器把代码翻译成汇编语言,同时将扩展名为“.i”的文件翻译成扩展名为“.s”的文件。

3、编译阶段:

将汇编语言翻译成机器语言指令,并将指令打包封存成可重定位目标程序的格式,将扩展名为“.s”的文件翻译成扩展名为“.o”的二进制文件。

4、链接阶段:

在示例代码中,改代码文件调用了标准库中printf函数。而printf函数的实际存储位置是一个单独编译的目标文件(编译的结果也是扩展名为“.o”的文件),所以此时主函数调用的时候,需要将该文件(即printf函数所在的编译文件)与hello world文件整合到一起,此时链接器就可以大显神通了,将两个文件合并后生成一个可执行目标文件。

‘柒’ 编译原理与汇编的区别和联系是什么

编译原理与汇编的区别和联系是什么
编译原理是研究各种语言转换(不够专业)为机器语言的过程中的各种理论。
编译原理是将计算机语言转化为可以在计算机硬件上直接运行的机器语言,是翻译语言的一种。
1、将高级语言变为机器语言,包括两种方法,编译是一种,另一种是解释;
2、将汇编语言变成机器语言的,叫汇编程序.
编译: 高级语言 --> 机器语言(指令);
汇编: 汇编指令 --> 机器指令;

‘捌’ 编译原理的基本概念

编译器 是将汇编或高级计算机语言翻译为二进制机器语言代码的计算机程序。编译器将源程序(source language) 编写的程序作为输入,翻译产生目标语言(target language )机器代码的等价程序。通常地,源程序为高级语言(high-level language ),像C或C + +、汉语语言程序等,而目标则是机器语言的目标代码 (object code,有时也称作机器代码(machine code )),也就是可以在计算机硬件中运行的机器代码软件程序。这一过程可以表示为:
源程序→编译器 →目标机器代码程序

‘玖’ 怎么将程序写入硬件,计算机的工作原理是怎样的

这个问题很专业~~

我上学4年现在只会编写软件,这个问题我也问过我的大学教授,他跟我一路神侃~然后~我比糊涂的还糊涂~

计算机运行原理

个人电脑的主要结构: 显示器 主机板 CPU (微处理器) 主要储存器 (记忆体) 扩充卡 电源供应器 光盘机 次要储存器 (硬盘) 键盘 鼠标

尽管计算机技术自20世纪40年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。

存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。

概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。

算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。

输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。

控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做那些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。

20世纪80年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。

由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为100,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)

指令如同数据一样在计算机内部是以二进制来表示的。比如说,10110000就是一条Intel x86系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。

更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。

超级计算机通常有着与基本的存储程序计算机显着区别的体系结构。它们通常由者数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard architecture)。

‘拾’ 硬件与内核的关系,或者说 硬件与编译器的关系

操作系统主要分为两部分:内核(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系列等。

热点内容
ios迁移安卓用什么助手 发布:2025-03-16 20:12:42 浏览:720
python异常值处理 发布:2025-03-16 20:12:42 浏览:581
POtn编程 发布:2025-03-16 20:06:11 浏览:776
竞彩资金怎么配置 发布:2025-03-16 20:01:57 浏览:10
在终端中打开编译环境 发布:2025-03-16 19:57:34 浏览:601
sqlserver安装数据库 发布:2025-03-16 19:57:01 浏览:36
如何关掉广告推送安卓 发布:2025-03-16 19:43:32 浏览:959
安卓如何关闭定时开机 发布:2025-03-16 19:23:54 浏览:292
酷派4g网络怎么设置密码 发布:2025-03-16 19:17:53 浏览:664
java培训费用 发布:2025-03-16 19:17:12 浏览:586