为什么程序要用中间语言来实现?
采用中间代码是把源程序映射成中间代码表示,再映射成目标代码的工作分在几个阶段进行,使编译算法更加清晰。中间代码有四种形式:
1、逆波兰表示
逆波兰表示又称后缀表示法,它是最简单的一种中间代码表示形式,早在编译程序出现之前,它就用于表示算术表达式。
2、四元式
四元式也是一种比较普遍采用的中间代码形式,
其形式为:(OP,ARG1,ARG2,RESULT)
3、三元式
三元式表示是与四元式类似的一种表示法,所不同的仅是三元式中没有表示运算结果的部分,凡要涉及到运算结果的均用三元式的位置或序号来代替。
4、树表示
树形表示是三元式的翻版。在树的表示中,树叶均为运算对象,即常量或变量,其他结点表示运算符。表达式的树形表示很容易实现:简单变量或常量的树就是该变量或常量自身。
扩展资料
中间语言的优点:
1、中间语言与具体机器特性无关,一种中间语言可以为生成多种不同型号的目标机的目标代码服务。
2、可对中间语言进行与机器无关的优化,有利于提高目标代码的质量。
对于中间语言,要求其不但与机器无关,而且有利于代码生成。
为什么程序要用中间语言来实现?
1、逆波兰表示 逆波兰表示又称后缀表示法,它是最简单的一种中间代码表示形式,早在编译程序出现之前,它就用于表示算术表达式。2、四元式 四元式也是一种比较普遍采用的中间代码形式,其形式为:(OP,ARG1,ARG2,RESULT)3、三元式 三元式表示是与四元式类似的一种表示法,所不同的仅是三元式中...
将高级语言程序翻译为机器语言程序的过程中常引入中间代码,好处是...
【答案】:B 从原理上讲,源程序在进行了语义分析之后就可以直接生成目标代码,但由于源程序与目标代码的逻辑结构往往差别很大,特别是考虑到具体机器指令系统的特点,要使翻译一次到位很困难。另外,用语法制导方式机械生成的目标代码往往是烦琐和低效的,因此有必要设计一种中间代码,将源程序首先翻译成中间...
通用中间语言和机器语言有什么区别?
通用中间语言(Intermediate Language,简称IL)是一种抽象的程序语言,通常用于高级语言编译器中的编译过程。编译器将高级语言编译成中间语言,然后再将中间语言编译成目标平台的机器语言。中间语言的主要作用是为了解决高级语言编译器所面临的跨平台问题。通过编译成中间语言,编译器可以将高级语言的源代码与底...
将高级语言程序翻译为机器语言程序过程中,常引入中间代码,其好处是...
【答案】:B 本题考查程序语言基础知识。"中间代码"是一种简单且含义明确记号系统,可以有若干种形式,它们共同特征是与具体机器无关,此时所作优化一般建立在对程序控制流和数据流分析基础之上,与具体机器无关。
简述什么是源语言,目标语言,中间语言
1、源语言:源语言是可以引导出另一种语言的语言。2、目标语言:目标语言,是一种利用特定语言输入目标语言的方法。3、中间语言:是一种面向语法,易于翻译成目标程序的源程序的等效内部表示代码。
C# 为什么要弄成中间代码?
所以只能说跨平台容易一些。2、按微软的规划,以后的应用程序要从网上付费下载来使用,这样就带来下载软件的安全与否的问题,而C#经编译后形成的是中间代码,不可以在本地机器上直接执行,必须经过CLR转换成本地代码后才能执行。这样,中间码可以顺利通过防火墙,而且安全性又有CLR来保证。
什么是中间语言(IL)?它的作用?
IL是.NET框架中中间语言(Intermediate Language)的缩写。使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL(Intermedate Language)的代码。使用中间语言的优点有两点,一是可以实现平台无关性,既与特定CPU无关...
中间代码简介
中间代码,通常被称为源程序的内部表示或中间语言,其核心功能在于简化编译程序的逻辑结构,特别是为目标代码的优化提供了便利。它作为源程序与机器语言之间的桥梁,具有一定的复杂性,但这种复杂性使得编译过程更为直观和可控。中间代码的常见形式包括逆波兰记号、四元式、三元式和树等,每种形式都有其独特...
什么叫中间语言
在中间语言中,第一个被执行的方法被称为入口函数(EntryPoint Function)。为了告诉汇编工具HelloWorld是入口函数,我们需要在代码中增加一条汇编命令entrypoint,该命令可以放在方法体中的任何位置。需要注意的是在一个程序集中只能有一个入口函数。 中间语言代码通常被编译成一个模块,该模块隶属于一个程序集。在.Net中...
IL是什么
IL是中间语言(Intermediate Language)的简称。中间语言在计算机科学中指的是一种介于高级编程语言和机器语言之间的抽象语言。它的设计目的是为了提供一种通用的、平台无关的代码表示,使得高级语言编写的程序能够在不同的平台和环境下运行。中间语言通常用于编译器或解释器的设计中,作为源代码和目标代码之间...
毕相朗清: 1、中间代码是源程序的一种内部表示,或称中间语言.2、中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间.3、中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树.
独山子区19339076767: C# 为什么要弄成中间代码? - ?
毕相朗清: 1、因为c语言也不能说真正的跨平台,只是这种语言比较低级,各个平台的实现相对一致.c语言的东西下载时还是会分平台的,比如for linux, for windows, for Mac等,不同平台的编译器对c的解释都有差异,所以只能说跨平台容易一些.2、按微软的规划,以后的应用程序要从网上付费下载来使用,这样就带来下载软件的安全与否的问题,而C#经编译后形成的是中间代码,不可以在本地机器上直接执行,必须经过CLR转换成本地代码后才能执行.这样,中间码可以顺利通过防火墙,而且安全性又有CLR来保证.
独山子区19339076767: 什么是中间语言(IL)?它的作用? - ?
毕相朗清: IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL(Intermedate Language)的代码. 使用中间语言的优点有两点,一是可以实现平台无关性,既与特定CPU无关;二是只要把.NET框架某种语言编译成IL代码,就实现.NET框架中语言之间的交互操作.(《C#程序设计及应用教程》(第2版),马骏 主编)参考:http://baike.baidu.com/view/2278922.htm
独山子区19339076767: .net程序集dll怎么看到代码 - ?
毕相朗清: 去下载一个 Reflector.exe 这个工具是专门用来反编译.NET的代码的, 只要代码没有混淆过, 可以把99%的代码还原出来给你.并且是免费的 http://www.red-gate.com/products/reflector/ 中间语言(MSIL) 这是一种类似Java字节码的语言,也是...
独山子区19339076767: 编译程序分为哪几个主要部分 - ?
毕相朗清: 1、词法分析 词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序.执行词法分析的程序称为词法分析程序或扫描器. 2、语...
独山子区19339076767: “C语言是中间语言”,中间语言是什么意思? - ?
毕相朗清: 编程语言,要解决的问题有两个,一个是方便程序员”表达“,一个是让计算机”听懂“.围绕着这两个问题,编程语言大约经历了机器语言、汇编语言、高级语言(C语言)、自然语言(比如SQL查询语言). C语言实际上是在过去的只有汇编语言写代码的时候,算是一种高级语言,现在习惯称其为中级语言,实际上是考虑C语言的用途,本身学通C语言,向下可以学习汇编语言,做硬件、底层相关的程序开发比如开发操作系统、驱动程序,Windows和Linux两大操作系统都是用C语言编写出来的,这是C语言底层的用途,向上,可以学习C++、Java等在C语言基础上或者C系风格的语言,主要做应用程序开发. 这样看来,C语言应该算是一个中级语言,起衔接作用.
独山子区19339076767: 编译程序包括哪几个主要组成部分 - ?
毕相朗清: 数据结构分析和综合时所用的主要数据结构,包括符号表、常数表和中间语言程序.符号表由源程序中所用的标识符连同它们的属性组成,其中属性包括种类(如变量、数组、结构、函数、过程等)、类型(如整型、实型、字符串、复型、标...
独山子区19339076767: 编程各语言之间的关系以及OD的原理. - ?
毕相朗清: 因为exe文件是统一标准的,编程语言不一样没关系,只要所有的编译器将源代码按exe格式进行编译,那么能保证不同编程语言生成的文件都能运行. 比如,世界上有很多种语言,有中文 日文 韩文等,编译器就像一个翻译一样,不同的语言有不同的翻译,所有翻译都按英文的语法标准翻译,就可以将不同的语言翻译成英文,这样都知道这些语言说的啥了. 为什么OD都可以反汇编?因为所有生成的exe文件(除了中间语言如c# java)最终都是二进制的文件,并且可以用汇编语言来表示.虽然源代码各有不同,但是最终的汇编是一样的,而OD就是将二进制的代码给翻译成汇编.
独山子区19339076767: C语言为什么介于汇编语言与高级语言之间的中级语言 - ?
毕相朗清: C语言就是高级语言,不过有的书说是中级语言,不过大多数都称为高级语言,至于C语言为什么叫中级语言的说法我想大概是因为操作比较底层的东西,如驱动,很多都使用C语言来写的.还有和内存有关的操作,如指针等. 补充:至于你说的介于汇编和高级语言之间我想没有这个概念性的说法,C语言编译后还是一些汇编指令,而汇编指令确对应机器指令(实际上编译成obj后,其实你看到的十六进制码,就是机器指令的十六进制表示了),如果你所说介于是指语言功能上的区别,C语言的确比其他高级语言更强大和灵活,操作更底层. - -! 以上我以自己的观念来说的,哪里说错了,麻烦通知下.哈哈 欢迎来学习C/C++的朋友 QQ群: 93262711
独山子区19339076767: 请问.net是一种编程语言吗? - ?
毕相朗清: .NET不是一种语言,是微软开发的一种框架,为了方便理解,可以当成微软版的Java虚拟机,不过.NET框架要远比Java虚拟机强大..NET是框架,和java、C、C#这类编程语言不是一个维度的事物,无法比较,也就谈不上区别. .NET框架(英...