正在加载图片...
版权所有南京大学计算机科学与技术系许畅等2022春季版 翻译的过程中,read函数可直接对应READ操作,write函数可直接对应WRITE操作。 除此之外,你的程序可以选择完成以下部分或全部的要求: 1)要求3.1:修改前面对C-源代码的假设2和3,使源代码中: )可以出现结构体类型的变量(但不会有结构体变量之间直接赋值)。 b)结构体类型的变量可以作为函数的参数(但函数不会返回结构体类型的值)。 2)要求3.2:修改前面对C-源代码的假设2和3,使源代码中: c)一维数组类型的变量可以作为函数参数(但函数不会返回一维数组类型的值)。 d)可以出现高维数组类型的变量(但高维数组类型的变量不会作为函数的参数或返 回类值)。 此外,实验三还会考察你的程序输出的中间代码的执行效率,因此你需要考虑如何优化中 间代码的生成。在你的程序可以生成正确的中间代码(“正确”是指该中间代码在虚拟机小程 序上运行结果正确)的前提下,如果该中间代码在我们的测试用例上能比50%甚至80%的同学 的中间代码效率都高,你将获得额外奖励。 4.1.2输入格式 你的程序的输入是一个包含C-一源代码的文本文件,你的程序需要能够接收一个输入文件 名和一个输出文件名作为参数。例如,假设你的程序名为cc、输入文件名为test1、输出文件名 为outl.ir,程序和输入文件都位于当前目录下,那么在Linux命令行下运行./cc test1out1.ir即 可将输出结果写入当前目录下名为out1.ir的文件中。 4.1.3输出格式 实验三要求你的程序将运行结果输出到文件。输出文件要求每行一条中间代码,每条中间 代码的含义如前文所述。如果输入文件包含多个函数定义,则需要通过FUNCTION语句将这 些函数隔开。FUNCTION语句和LABEL语句的格式类似,具体例子见后面的样例。 对每个特定的输入,并不存在唯一正确的输出。我们将使用虚拟机小程序对你的中间代码 的正确性进行测试。任何能被虚拟机小程序顺利执行并得到正确结果的输出都将被接受。此 外,虚拟机小程序还会统计你的中间代码所执行过的各种操作的次数,以此来估计你的程序生 成的中间代码的效率。 4.1.4测试环境 你的程序将在如下环境中被编译并运行(同实验一): 72版权所有 南京大学计算机科学与技术系 许畅等 2022春季版 72 翻译的过程中,read函数可直接对应READ操作,write函数可直接对应WRITE操作。 除此之外,你的程序可以选择完成以下部分或全部的要求: 1) 要求3.1:修改前面对C−−源代码的假设2和3,使源代码中: a) 可以出现结构体类型的变量(但不会有结构体变量之间直接赋值)。 b) 结构体类型的变量可以作为函数的参数(但函数不会返回结构体类型的值)。 2) 要求3.2:修改前面对C−−源代码的假设2和3,使源代码中: c) 一维数组类型的变量可以作为函数参数(但函数不会返回一维数组类型的值)。 d) 可以出现高维数组类型的变量(但高维数组类型的变量不会作为函数的参数或返 回类值)。 此外,实验三还会考察你的程序输出的中间代码的执行效率,因此你需要考虑如何优化中 间代码的生成。在你的程序可以生成正确的中间代码(“正确”是指该中间代码在虚拟机小程 序上运行结果正确)的前提下,如果该中间代码在我们的测试用例上能比50%甚至80%的同学 的中间代码效率都高,你将获得额外奖励。 4.1.2 输入格式 你的程序的输入是一个包含C−−源代码的文本文件,你的程序需要能够接收一个输入文件 名和一个输出文件名作为参数。例如,假设你的程序名为cc、输入文件名为test1、输出文件名 为out1.ir,程序和输入文件都位于当前目录下,那么在Linux命令行下运行./cc test1 out1.ir即 可将输出结果写入当前目录下名为out1.ir的文件中。 4.1.3 输出格式 实验三要求你的程序将运行结果输出到文件。输出文件要求每行一条中间代码,每条中间 代码的含义如前文所述。如果输入文件包含多个函数定义,则需要通过FUNCTION语句将这 些函数隔开。FUNCTION语句和LABEL语句的格式类似,具体例子见后面的样例。 对每个特定的输入,并不存在唯一正确的输出。我们将使用虚拟机小程序对你的中间代码 的正确性进行测试。任何能被虚拟机小程序顺利执行并得到正确结果的输出都将被接受。此 外,虚拟机小程序还会统计你的中间代码所执行过的各种操作的次数,以此来估计你的程序生 成的中间代码的效率。 4.1.4 测试环境 你的程序将在如下环境中被编译并运行(同实验一):
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有