正在加载图片...
版权所有南京大学计算机科学与技术系许畅等2022春季版 于、大于等于共6种),如果该关系成立则进行跳转,否则不跳转而直接将控制转移到下一条 语句。 8)返回语句RETURN用于从函数体内部返回值并退出当前函数,RETURN后面可以跟一 个变量,也可以跟一个常数。 9)变量声明语句DEC用于为一个函数体内的局部变量声明其所需要的空间,该空间的大 小以字节为单位。这个语句是专门为数组变量和结构体变量这类需要开辟一段连续的内存空间 的变量所准备的。例如,如果我们需要声明一个长度为l0的int类型数组a,则可以写成DECa 40。对于那些类型不是数组或结构体的变量,直接使用即可,不需要使用DEC语句对其进行 声明。变量的命名规范与之前的实验相同。另外,在中间代码中不存在作用域的概念,因此不 同的变量一定要避免重名。 10) 与函数调用有关的语句包括CALL、PARAM和ARG三种。其中PARAM语句在 每个函数开头使用,对于函数中形参的数目和名称进行声明。例如,若一个函数uc有三个形 参a、b、c,则该函数的函数体内前三条语句为:PARAM a、PARAM b和PARAM c。CALL 和ARG语句负责进行函数调用。在调用一个函数之前,我们先使用ARG语句传入所有实参, 随后使用CALL语句调用该函数并存储返回值。仍以函数fuc为例,如果我们需要依次传入三 个实参x、y、z,并将返回值保存到临时变量t1中,则可分别表述为:ARGZ、ARGy、ARG x和t1=CALL func。注意ARG传入参数的顺序和PARAM声明参数的顺序正好相反。ARG语 句的参数可以是变量、以#开头的常数或以&开头的某个变量的地址。注意:当函数参数是结 构体或数组时,ARG语句的参数为结构体或数组的地址(即以传引用的方式实现函数参数传 递)。 11) 输入输出语句READ和WRITE用于和控制台进行交互。READ语句可以从控制 台读入一个整型变量,而WRTE语句可将一个整型变量的值写到控制台上。 除以上说明外,注意关键字及变量名都是大小写敏感的,也就是说“bc”和“AbC”会 被作为两个不同的变量对待,上述所有关键字(例如CALL、IF、DEC等)都必须大写,否则 虚拟机小程序会将其看作一个变量名。 在实验三中,你可能需要在实验二的程序中做如下更改:在符号表中预先添加read和 write这两个预定义的函数。其中read函数没有任何参数,返回值为int型(即读入的整数 值),write函数包含一个int类型的参数(即要输出的整数值),返回值也为int型(固定返回 0)。添加这两个函数的目的是让C一源程序拥有可以与控制台进行交互的接口。在中间代码 71版权所有 南京大学计算机科学与技术系 许畅等 2022春季版 71 于、大于等于共6种),如果该关系成立则进行跳转,否则不跳转而直接将控制转移到下一条 语句。 8) 返回语句RETURN用于从函数体内部返回值并退出当前函数,RETURN后面可以跟一 个变量,也可以跟一个常数。 9) 变量声明语句DEC用于为一个函数体内的局部变量声明其所需要的空间,该空间的大 小以字节为单位。这个语句是专门为数组变量和结构体变量这类需要开辟一段连续的内存空间 的变量所准备的。例如,如果我们需要声明一个长度为10的int类型数组a,则可以写成DEC a 40。对于那些类型不是数组或结构体的变量,直接使用即可,不需要使用DEC语句对其进行 声明。变量的命名规范与之前的实验相同。另外,在中间代码中不存在作用域的概念,因此不 同的变量一定要避免重名。 10) 与函数调用有关的语句包括CALL、PARAM和ARG三种。其中PARAM语句在 每个函数开头使用,对于函数中形参的数目和名称进行声明。例如,若一个函数func有三个形 参a、b、c,则该函数的函数体内前三条语句为:PARAM a、PARAM b和PARAM c。CALL 和ARG语句负责进行函数调用。在调用一个函数之前,我们先使用ARG语句传入所有实参, 随后使用CALL语句调用该函数并存储返回值。仍以函数func为例,如果我们需要依次传入三 个实参x、y、z,并将返回值保存到临时变量t1中,则可分别表述为:ARG z、ARG y、ARG x和t1 := CALL func。注意ARG传入参数的顺序和PARAM声明参数的顺序正好相反。ARG语 句的参数可以是变量、以#开头的常数或以&开头的某个变量的地址。注意:当函数参数是结 构体或数组时,ARG语句的参数为结构体或数组的地址(即以传引用的方式实现函数参数传 递)。 11) 输入输出语句READ和WRITE用于和控制台进行交互。READ语句可以从控制 台读入一个整型变量,而WRITE语句可将一个整型变量的值写到控制台上。 除以上说明外,注意关键字及变量名都是大小写敏感的,也就是说“abc”和“AbC”会 被作为两个不同的变量对待,上述所有关键字(例如CALL、IF、DEC等)都必须大写,否则 虚拟机小程序会将其看作一个变量名。 在实验三中,你可能需要在实验二的程序中做如下更改:在符号表中预先添加read和 write这两个预定义的函数。其中read函数没有任何参数,返回值为int型(即读入的整数 值),write函数包含一个int类型的参数(即要输出的整数值),返回值也为int型(固定返回 0)。添加这两个函数的目的是让C−−源程序拥有可以与控制台进行交互的接口。在中间代码
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有