4.4 表达式及赋值语句的翻译.
- 格式:ppt
- 大小:115.50 KB
- 文档页数:27
赋值语句翻译一. 任务要求在理解翻译原理的基础上.用C 语言写一个实现赋值语句翻译的程序。
1定义赋值语句2分析出翻译中要解决的问题3明确翻译错误的表达以及处理4程序设计以及调试二. 实验目的.加深对语法制导翻译原理的理解,掌握将语法所识别的语法范畴变换为某种中间代码的语义翻译方法三. 赋值语句的定义编译过程的语义分析阶段将要完成两项主要工作.首先分析语言的含义.接着用一种中间代码将这种含义描述出来。
四元式主要由4 部分组成..op,arg1,arg2,result其中op 是运算符.arg1arg2 分别是第一和第二个运算对象.当op 是一目运算时.常常将运算对象定义为arg1。
例如.表达式-C 和赋值语句X=a 的四元式可分别表示为.@C-T=a-X四元式之间的联系是通过临时变量或已定义的变量来实现的.这样易于调整和变动四元式.也为中间代码的优化工作带来很大方便。
例如.下图表示了一个表达式 X = a * b + c / d 的四元式序列。
(1) ( *, a, b, T1 )(2) ( /, c, d, T2 )(3) ( +, T1, T2, T3 )(4) ( =, T3, -, X )图3.1 表达式的四元式序列编译系统中.有时将四元式表示成另一种更直观、更易理解的形式――三地址代码。
三地址代码形式定义为.X a op b其中X a b 可为变量名或临时变量名.a b 还可为常数.op 是运算符.这种表示法与赋值语句的区别是每个语句的右边只能有一个运算符。
图3.1 的四元式序列可以表示成如下三地址代码序列.(1) T1 = a * b(2) T2 = c / d(3) T3 = T1 + T2(4) X = T3三地址代码形式突出表现了每一个四元式中参加运算的对象和结果变量.因此有两个地址为操作对象的地址.第3 个为存放结果的临时变量.或用户自定义变量的地址。
这种表示形式有利于中间代码的优化和目标代码的生成。
2023年EDA技术与VHDL第二版(潘松著)课后习题答案下载EDA技术与VHDL第二版(潘松著)课后答案下载第1章 EDA技术概述1.1 EDA技术及其发展1.1.1 EDA技术的发展1.1.2 EDA技术的涵义1.1.3 EDA技术的基本特征1.2 EDA技术的主要内容及主要的EDA厂商1.2.1 EDA技术的主要内容1.2.2 主要EDA厂商概述1.3 EDA技术实现目标1.3.1 超大规模可编程逻辑器件1.3.2 半定制或全定制ASIC1.3.3 混合ASIC1.4 EDA技术应用1.4.1 EDA技术应用形式1.4.2 EDA技术应用场合1.5 EDA技术的发展趋势1.5.1 可编程器件的发展趋势1.5.2 软件开发工具的发展趋势1.5.3 输入方式的发展趋势__小结思考题和习题第2章大规模可编程逻辑器件2.1 可编程逻辑器件概述2.1.1 PLD的'发展进程2.1.2 PLD的种类及分类方法2.2 简单可编程逻辑器件2.2.1 PLD电路的表示方法及有关符号 2.2.2 PROM基本结构2.2.3 PLA基本结构2.2.4 PAL基本结构2.2.5 GAL基本结构2.3 复杂可编程逻辑器件2.3.1 CPLD基本结构2.3.2 Altera公司器件2.4 现场可编程逻辑器件2.4.1 FPGA整体结构2.4.2 Xilinx公司FPGA器件2.5 在系统可编程逻辑器件2.5.1 ispLSl/pLSl的结构2.5.2 Lattice公司ispLSI系列器件 2.6 FPGA和CPLD的开发应用2.6.1 CPLD和FPGA的编程与配置2.6.2 FPGA和CPLD的性能比较2.6.3 FPGA和CPLD的应用选择__小结思考题和习题第3章 EDA设计流程与开发3.1 EDA设计流程3.1.1 设计输入3.1.2 综合3.1.3 适配3.1.4 时序仿真与功能仿真3.1.5 编程下载3.1.6 硬件测试3.2 ASIC及其设计流程3.2.1 ASIC设计方法3.2.2 一般的ASIC设计流程3.3 可编程逻辑器件的开发环境 3.4 硬件描述语言3.5 IP核__小结思考题和习题第4章硬件描述语言VHDL4.1 VHDL概述4.1.1 VHDL的发展历程4.1.2 VHDL的特点4.2 VHDL程序基本结构4.2.1 实体4.2.2 结构体4.2.3 库4.2.4 程序包4.2.5 配置4.3 VHDL基本要素4.3.1 文字规则4.3.2 数据对象4.3.3 数据类型4.3.4 运算操作符4.3.5 VHDL结构体描述方式 4.4 VHDL顺序语句4.4.1 赋值语句4.4.2 IF语句4.4.3 等待和断言语句4.4.4 cASE语句4.4.5 LOOP语句4.4.6 RETIARN语句4.4.7 过程调用语句4.4.8 REPORT语句4.5 VHDL并行语句4.5.1 进程语句4.5.2 块语句4.5.3 并行信号代人语句4.5.4 并行过程调用语句4.5.5 并行断言语句4.5.6 参数传递语句4.5.7 元件例化语句__小结思考题和习题第5章 QuartusⅡ软件及其应用5.1 基本设计流程5.1.1 建立工作库文件夹和编辑设计文件 5.1.2 创建工程5.1.3 编译前设计5.1.4 全程编译5.1.5 时序仿真5.1.6 应用RTL电路图观察器5.2 引脚设置和下载5.2.1 引脚锁定5.2.2 配置文件下载5.2.3 AS模式编程配置器件5.2.4 JTAG间接模式编程配置器件5.2.5 USBBlaster编程配置器件使用方法 __小结思考题和习题第6章 VHDL应用实例6.1 组合逻辑电路设计6.1.1 基本门电路设计6.1.2 译码器设计6.1.3 数据选择器设计6.1.4 三态门设计6.1.5 编码器设计6.1.6 数值比较器设计6.2 时序逻辑电路设计6.2.1 时钟信号和复位信号6.2.2 触发器设计6.2.3 寄存器和移位寄存器设计6.2.4 计数器设计6.2.5 存储器设计6.3 综合实例——数字秒表的设计__小结思考题和习题第7章状态机设计7.1 一般有限状态机7.1.1 数据类型定义语句7.1.2 为什么要使用状态机 7.1.3 一般有限状态机的设计 7.2 Moore型有限状态机设计 7.2.1 多进程有限状态机7.2.2 单进程有限状态机7.3 Mealy型有限状态机7.4 状态编码7.4.1 状态位直接输出型编码 7.4.2 顺序编码7.4.3 一位热码编码7.5 状态机处理__小结思考题和习题第8章 EDlA实验开发系统8.1 GW48型实验开发系统原理与应用8.1.1 系统性能及使用注意事项8.1.2 GW48系统主板结构与使用方法8.2 实验电路结构图8.2.1 实验电路信号资源符号图说明8.2.2 各实验电路结构图特点与适用范围简述8.3 GW48CK/GK/EK/PK2系统信号名与芯片引脚对照表 __小结思考题和习题第9章 EnA技术实验实验一:全加器的设计实验二:4位加减法器的设计实验三:基本D触发器的设计实验四:同步清零计数器的设计实验五:基本移位寄存器的设计串人/串出移位寄存器实验六:同步预置数串行输出移位寄存器的设计实验七:半整数分频器的设计实验八:音乐发生器的设计实验九:交通灯控制器的设计实验十:数字时钟的设计EDA技术与VHDL第二版(潘松著):内容简介《EDA技术与VHDL》主要内容有Altera公司可编程器件及器件的选用、QuartusⅡ开发工具的使用;VHDL硬件描述语言及丰富的数字电路和电子数字系统EDA设计实例。
赋值语句的名词解释赋值语句是计算机编程中的重要概念之一。
它是一种用于将特定值赋给变量的操作,通常表示为"="号。
这个简单的符号代表着一种将右边的值赋给左边变量的行为。
赋值语句的基本形式是“变量名 = 值” ,其中变量名表示一个标识符,用于表示存储数据的位置,值代表要存储的数据。
在这个过程中,变量名被视为存储值的容器,而值则是要存储的内容。
赋值语句的核心目的是在计算机内存中创建一个变量,并将指定的值存储在该变量中。
赋值语句在程序设计中起到了至关重要的作用。
通过将值存储在变量中,程序可以在后续代码中使用这些值,以便进行后续计算、处理和展示。
在编程中,用户可以根据实际需求创建并使用多个变量,通过赋值语句,程序能够以一种灵活而高效的方式处理和管理这些变量。
赋值语句的执行过程遵循严格的规则。
首先,计算机会评估赋值语句右边的表达式,并计算出一个结果。
然后,计算机将这个结果赋值给左边的变量。
这个结果可以是一个数值、一个字符串、一个布尔值或其他数据类型,取决于变量的声明。
在赋值语句中,左边的变量必须事先声明。
声明一个变量的目的是为其分配内存空间,以便存储赋值的结果。
不同的编程语言对变量声明的方式有所不同,有些语言要求在使用变量之前显式声明,而有些语言则可以在使用变量时隐式声明。
除了基本的赋值语句形式之外,还存在一些扩展的赋值语句。
例如,"+="表示将右边的值与左边的变量相加,并将结果赋给变量。
其他常见的扩展赋值语句还包括“-=”、“*=”、“/=”等。
这些扩展语句简化了代码的书写,使得程序更加简洁和易读。
正如上述内容所示,赋值语句在计算机编程中具有重要地位。
通过赋值语句,程序可以存储和处理不同类型的数据。
这种灵活性有助于程序员创建出功能强大且高效的程序。
因此,了解和掌握赋值语句的概念及其使用方法对于每一个计算机程序员来说都至关重要。
第四章语句4.1.1表达式语句表达式语句出现得最多,因此,有人说C语言是表达式语言。
表达式语句与表达式之间虽然只差一个分号(;),但二者是截然不同的。
在程序中,有的地方需要用表达式,则不能写成表达式语句。
例如,在if语句或循环语句的条件中,要求用表达式作为条件,如果写成表达式语句(即末尾加了分号),则是错误的。
同样,在要求用表达式语句的地方,写成表达式(即少写一个分号),也是错误的。
所以,读者一定要搞清楚何时用表达式,何时用表达式语句,二者不要搞混了。
例如,b=a+3是一个表达式;而b=a十3;便是一个表达式语句,这是一个赋值表达式语句。
类似地,表达式语句还有:++i; (算术表达式语句)m>n7m:n; (条件表达式语句)b==5 (比较表达式语句)x&&++y||Z; (逻辑表达式语);printf("0n!\n")(函数调用也是表达式语句)i=a,j=5,k=7; (逗号表达式语句)等等。
有些表达式语句虽然是合法的,例如,m> n? m;n;但是,它并没有实际意义,需要将其表达式的值赋给某个变量才有意义。
例如,x=m>n? m:n;这是一个有意义的表达式语句,它将一个表达式m>n? m ; n的值赋给了变量x.虽然任何一个表达式加上分号都构成表达式语句,但在程序中要出现的是有意义的表达式语句。
4.1.2 空语句空语句是一种只有分号而没有表达式的特殊语句。
空语句是c语句中最简单的语句,因为它只由一个分号(;)组成。
空语句是一种不执行任何操作的语句。
说它是特殊语句是指它是一种"不做事情"的语句。
空语句在编程中也是有用的,它主要被用在需要一条不做事情的语句的地方。
例如,它可用来作循环体,则该循环是空循环。
下面是一个为了延迟一段时间的循环,其循环体可用空语句。
for<i=0: i<1000;i++)空语句还可以用在goto.语句中语句标号的后面,即需要goto语句转向一条什么事情都不做的语句,那么在该语句标号的后面可用空语句。