Scroll Top
19th Ave New York, NY 95822, USA

电子代写|编译器代写Compilers代考|CS4200 High-Level Languages

如果你也在 怎样代写编译器Compilers CS4200这个学科遇到相关的难题,请随时右上角联系我们的24/7代写客服。编译器Compilers在计算机领域,编译器是一种计算机程序,它将用一种编程语言(源语言)编写的计算机代码翻译成另一种语言(目标语言)。编译器 “这一名称主要用于将源代码从高级编程语言翻译成低级语言(如汇编语言、目标代码或机器代码)以创建一个可执行的程序的程序。

编译器Compilers有许多不同类型的编译器,它们以不同的有用形式产生输出。交叉编译器为不同的CPU或操作系统产生代码,而不是交叉编译器本身所运行的系统。引导编译器通常是一个临时编译器,用于编译一种语言的更永久或更好的优化编译器。相关的软件包括:从低级语言翻译到高级语言的程序是反编译器;在高级语言之间翻译的程序,通常称为源到源编译器或转译器。语言改写器通常是指在不改变语言的情况下翻译表达形式的程序。编译器-编译器是一个产生编译器(或部分编译器)的编译器,通常以通用和可重复使用的方式,以便能够产生许多不同的编译器。

编译器Compilers代写,免费提交作业要求, 满意后付款,成绩80\%以下全额退款,安全省心无顾虑。专业硕 博写手团队,所有订单可靠准时,保证 100% 原创。最高质量的编译器Compilers作业代写,服务覆盖北美、欧洲、澳洲等 国家。 在代写价格方面,考虑到同学们的经济条件,在保障代写质量的前提下,我们为客户提供最合理的价格。 由于作业种类很多,同时其中的大部分作业在字数上都没有具体要求,因此编译器Compilers作业代写的价格不固定。通常在专家查看完作业要求之后会给出报价。作业难度和截止日期对价格也有很大的影响。

同学们在留学期间,都对各式各样的作业考试很是头疼,如果你无从下手,不如考虑my-assignmentexpert™!

my-assignmentexpert™提供最专业的一站式服务:Essay代写,Dissertation代写,Assignment代写,Paper代写,Proposal代写,Proposal代写,Literature Review代写,Online Course,Exam代考等等。my-assignmentexpert™专注为留学生提供Essay代写服务,拥有各个专业的博硕教师团队帮您代写,免费修改及辅导,保证成果完成的效率和质量。同时有多家检测平台帐号,包括Turnitin高级账户,检测论文不会留痕,写好后检测修改,放心可靠,经得起任何考验!

想知道您作业确定的价格吗? 免费下单以相关学科的专家能了解具体的要求之后在1-3个小时就提出价格。专家的 报价比上列的价格能便宜好几倍。

我们在电子代写方面已经树立了自己的口碑, 保证靠谱, 高质且原创的电子代写服务。我们的专家在编译器Compilers代写方面经验极为丰富,各种编译器Compilers相关的作业也就用不着说。

电子代写|编译器代写Compilers代考|CS4200 High-Level Languages

电子代写|编译器代写Compilers代考|High-Level Languages

Symbolic assembly programs are easier to write and understand than machine-language programs primarily because numerical codes for addresses and operators are replaced by more meaningful symbolic codes. Nevertheless, even with macros, there are severe drawbacks to writing in assembly language. The programmer must still know the details of how a specific computer operates. He must also mentally translate complex operations and data structures into sequences of low-level operations which use only the primitive data types that machine language provides. The programmer must also be intimately concerned with how and where data is represented within the machine. Although there are a few situations in which such detailed knowledge is essential for efficiency, most of the programmer’s time is unnecessarily wasted on such intricacies.

To avoid these problems, high-level programming languages were developed. Basically, a high-level programming language allows a programmer to express algorithms in a more natural notation that avoids many of the details of how a specific computer functions. For example, it is much more natural to write the expression $\mathrm{A}+\mathrm{B}$ than a sequence of assembly language instructions to add $\mathrm{A}$ and $\mathrm{B}$. COBOL, FORTRAN, PL/I, ALGOL, $\dagger$ SNOBOL, APL, PASCAL, LISP and C are some of the more common high-level languages, and we assume the reader is familiar with at least one of these languages. References for these languages and others are found in the bibliographic notes of Chapter 2.

A high-level programming language makes the programming task simpler, but it also introduces some problems. The most obvious is that we need a program to translate the high-level language into a language the machine can understand. In a sense, this program, the compiler, is completely analogous to the assembler for an assembly language.

A compiler, however, is a substantially more complex program to write than an assembler. Some compilers even make use of an assembler as an appendage, with the compiler producing assembly code, which is then assembled and loaded before being executed in the resulting machinelanguage form.

Before discussing compilers in detail, however, we should know the types of constructs typically found in high-level programming languages. The form and meaning of the constructs in a programming language have a strong impact on the overall design of a compiler for that language. Chapter 2 of this book reviews the main concepts concerning programming languages.

电子代写|编译器代写Compilers代考|The Structure of a Compiler

A compiler takes as input a source program and produces as output an equivalent sequence of machine instructions. This process is so complex that it is not reasonable, either from a logical point of view or from an implementation point of view, to consider the compilation process as occurring in one single step. For this reason, it is customary to partition the compilation process into a series of subprocesses called phases, as shown in Fig. 1.2. A phase is a logically cohesive operation that takes as input one representation of the source program and produces as output another representation.

The first phase, called the lexical analyzer, or scanner, separates characters of the source language into groups that logically belong together; these groups are called tokens. The usual tokens are keywords, such as DO or IF, identifiers, such as $\mathrm{X}$ or NUM, operator symbols such as $<=$ or $+$, and punctuation symbols such as parentheses or commas. The output of the lexical analyzer is a stream of tokens, which is passed to the next phase, the syntax analyzer, or parser. The tokens in this stream can be represented by codes which we may regard as integers. Thus, DO might be represented by $1,+$ by 2 , and “identifier” by 3 . In the case of a token like “identifier,” a second quantity, telling which of those identifiers used by the program is represented by this instance of token “identifier,” is passed along with the integer code for “identifier.”

The syntax analyzer groups tokens together into syntactic structures. For example, the three tokens representing $A+B$ might be grouped into a syntactic structure called an expression. Expressions might further be combined to form statements. Often the syntactic structure can be regarded as a tree whose leaves are the tokens. The interior nodes of the tree represent strings of tokens that logically belong together.

The intermediate code generator uses the structure produced by the syntax analyzer to create a stream of simple instructions. Many styles of intermediate code are possible. One common style uses instructions with one operator and a small number of operands. These instructions can be viewed as simple macros like the macro ADD2 discussed in Section 1.2. The primary difference between intermediate code and assembly code is that the intermediate code need not specify the registers to be used for each operation.

电子代写|编译器代写Compilers代考|CS4200 High-Level Languages

编译器代写

电子代写|编译器代写compiler代考|High-Level Languages

.编译器


符号汇编程序比机器语言程序更容易编写和理解,主要是因为地址和操作符的数字代码被更有意义的符号代码所取代。然而,即使使用宏,用汇编语言编写也有严重的缺陷。程序员仍然必须知道特定计算机如何运行的细节。他还必须在心里把复杂的操作和数据结构转换成只使用机器语言提供的基本数据类型的低级操作序列。程序员还必须密切关注数据在机器中的表示方式和位置。尽管在某些情况下,这些详细的知识对于提高效率是必不可少的,但程序员的大部分时间都不必要地浪费在这些错综复杂的事情上


为了避免这些问题,高级编程语言被开发出来。基本上,高级编程语言允许程序员用更自然的表示法来表示算法,从而避免了具体计算机如何运行的许多细节。例如,编写表达式$\mathrm{A}+\mathrm{B}$要比编写添加$\mathrm{A}$和$\mathrm{B}$的汇编语言指令序列自然得多。COBOL、FORTRAN、PL/I、ALGOL、$\dagger$ SNOBOL、APL、PASCAL、LISP和C是一些比较常见的高级语言,我们假设读者至少熟悉其中一种语言。这些语言和其他语言的参考文献可在第二章的参考书目注释中找到


高级编程语言使编程任务更简单,但它也引入了一些问题。最明显的是,我们需要一个程序把高级语言翻译成机器可以理解的语言。在某种意义上,这个编译器程序完全类似于汇编语言的汇编器


然而,编译器是一个比汇编程序复杂得多的程序。有些编译器甚至将汇编器作为附件使用,编译器生成汇编代码,然后将汇编代码组装并加载,然后以生成的机器语言形式执行


然而,在详细讨论编译器之前,我们应该了解高级编程语言中常见的构造类型。编程语言中构造的形式和意义对该语言编译器的总体设计有很大影响。本书的第二章回顾了有关编程语言的主要概念

电子代写|编译器代写Compilers代考|编译器的结构

.编译器的结构


编译器接受一个源程序作为输入,并产生一个等价的机器指令序列作为输出。这个过程是如此复杂,无论从逻辑的角度还是从实现的角度来看,认为编译过程发生在单个步骤中都是不合理的。由于这个原因,习惯上将编译过程划分为一系列称为阶段的子过程,如图1.2所示。阶段是一种逻辑内聚操作,它将源程序的一种表示形式作为输入,并将另一种表示形式作为输出。


第一个阶段称为词法分析器或扫描器,它将源语言的字符分成逻辑上属于一起的组;这些组称为令牌。通常的标记是关键字(如DO或IF)、标识符(如$\mathrm{X}$或NUM)、操作符符号(如$<=$或$+$)以及标点符号(如括号或逗号)。词法分析器的输出是标记流,它被传递到下一个阶段,即语法分析器或解析器。这个流中的标记可以用我们可以视为整数的代码表示。因此,DO可以用2表示$1,+$,用3表示“identifier”。在像“identifier”这样的标记的情况下,第二个数量告诉程序使用的那些标识符中有哪些是由标记“identifier”的实例表示的,它与“identifier”的整数代码一起被传递。


语法分析器将标记分组到语法结构中。例如,表示$A+B$的三个标记可能被分组到一个称为表达式的语法结构中。表达式可以进一步组合形成语句。句法结构通常可以看作是一棵树,它的叶子是标记。树的内部节点表示逻辑上属于一起的令牌字符串


中间代码生成器使用语法分析器生成的结构来创建简单指令流。中间代码可以有多种样式。一种常见的样式使用带有一个操作符和少量操作数的指令。这些指令可以看作像1.2节中讨论的宏ADD2那样的简单宏。中间代码和程序集代码之间的主要区别是,中间代码不需要指定每个操作使用的寄存器

电子代写|编译器代写Compilers代考

电子代写|编译器代写Compilers代考 请认准UprivateTA™. UprivateTA™为您的留学生涯保驾护航。

微观经济学代写

微观经济学是主流经济学的一个分支,研究个人和企业在做出有关稀缺资源分配的决策时的行为以及这些个人和企业之间的相互作用。my-assignmentexpert™ 为您的留学生涯保驾护航 在数学Mathematics作业代写方面已经树立了自己的口碑, 保证靠谱, 高质且原创的数学Mathematics代写服务。我们的专家在图论代写Graph Theory代写方面经验极为丰富,各种图论代写Graph Theory相关的作业也就用不着 说。

线性代数代写

线性代数是数学的一个分支,涉及线性方程,如:线性图,如:以及它们在向量空间和通过矩阵的表示。线性代数是几乎所有数学领域的核心。

博弈论代写

现代博弈论始于约翰-冯-诺伊曼(John von Neumann)提出的两人零和博弈中的混合策略均衡的观点及其证明。冯-诺依曼的原始证明使用了关于连续映射到紧凑凸集的布劳威尔定点定理,这成为博弈论和数学经济学的标准方法。在他的论文之后,1944年,他与奥斯卡-莫根斯特恩(Oskar Morgenstern)共同撰写了《游戏和经济行为理论》一书,该书考虑了几个参与者的合作游戏。这本书的第二版提供了预期效用的公理理论,使数理统计学家和经济学家能够处理不确定性下的决策。

微积分代写

微积分,最初被称为无穷小微积分或 “无穷小的微积分”,是对连续变化的数学研究,就像几何学是对形状的研究,而代数是对算术运算的概括研究一样。

它有两个主要分支,微分和积分;微分涉及瞬时变化率和曲线的斜率,而积分涉及数量的累积,以及曲线下或曲线之间的面积。这两个分支通过微积分的基本定理相互联系,它们利用了无限序列和无限级数收敛到一个明确定义的极限的基本概念 。

计量经济学代写

什么是计量经济学?
计量经济学是统计学和数学模型的定量应用,使用数据来发展理论或测试经济学中的现有假设,并根据历史数据预测未来趋势。它对现实世界的数据进行统计试验,然后将结果与被测试的理论进行比较和对比。

根据你是对测试现有理论感兴趣,还是对利用现有数据在这些观察的基础上提出新的假设感兴趣,计量经济学可以细分为两大类:理论和应用。那些经常从事这种实践的人通常被称为计量经济学家。

Matlab代写

MATLAB 是一种用于技术计算的高性能语言。它将计算、可视化和编程集成在一个易于使用的环境中,其中问题和解决方案以熟悉的数学符号表示。典型用途包括:数学和计算算法开发建模、仿真和原型制作数据分析、探索和可视化科学和工程图形应用程序开发,包括图形用户界面构建MATLAB 是一个交互式系统,其基本数据元素是一个不需要维度的数组。这使您可以解决许多技术计算问题,尤其是那些具有矩阵和向量公式的问题,而只需用 C 或 Fortran 等标量非交互式语言编写程序所需的时间的一小部分。MATLAB 名称代表矩阵实验室。MATLAB 最初的编写目的是提供对由 LINPACK 和 EISPACK 项目开发的矩阵软件的轻松访问,这两个项目共同代表了矩阵计算软件的最新技术。MATLAB 经过多年的发展,得到了许多用户的投入。在大学环境中,它是数学、工程和科学入门和高级课程的标准教学工具。在工业领域,MATLAB 是高效研究、开发和分析的首选工具。MATLAB 具有一系列称为工具箱的特定于应用程序的解决方案。对于大多数 MATLAB 用户来说非常重要,工具箱允许您学习应用专业技术。工具箱是 MATLAB 函数(M 文件)的综合集合,可扩展 MATLAB 环境以解决特定类别的问题。可用工具箱的领域包括信号处理、控制系统、神经网络、模糊逻辑、小波、仿真等。

Related Posts

Leave a comment