Location:
Search - 8086 c compiler
Search list
Description: 由于时间紧迫及事先准备不足,编译器最后定型时暴露出不少问题及不足之处,主要有以下一些方面: 不支持数组数据类型,这是文法分析器设计时的一个疏漏,由于时间关系,最后只得把扫描器中已做好的相关的数组部分删去。 对于float数据类型的支持,直到语义分析都是正常的,也能生成相应的汇编代码,但由于我们对8086/8088指令系统本身了解不足,这样的汇编代码将只能做到含义上完全忠实于源程序,但不能运行。 对于局部变量的支持,则于时间紧迫,所有的局部变量全被处理成静态变量。使递归函数不能得到正确的结果。 对于函数调用语句,不进行参数匹配检查,如果参数数量不对,也将能通过编译,但运行时将产生非法操作。 对&& !等逻辑操作在最后生成代码时处理比较粗燥,生成的代码在逻辑复杂时将不能保证运行正常。 接下来有一些,不能说是缺陷,但必须说明的问题: 对于main函数,没有参数表,通回类型也必须为void,但如果写上参数表及其他返回类型也能编译通过,生成代码时将简单地忽略,不影响最后的代码的运行。 对于while,for,if语句,其语句体不管是一句还是多句,必须都有{}围起来。这跟C语言中若是一句则可省略{}不同。-Due to the time constraints and lack of preparation in advance, the compiler finalized when exposed numerous problems and shortcomings, mainly in the following aspects : no support for array data type, which is grammar analyzer design of an omission, because of the time, the final could only have scanners do phase customs array deleted. For float data types of support until semantic analysis is normal, and can generate the corresponding assembly code, but because of our 8086/8088 directive to the knowledge of the system itself, this compilation can do to code meaning entirely faithful to the source, but not running. For the support of local variables, in the time constraints, all local variables were all handled in the static variable. So recursive function will not get the right results.
Platform: |
Size: 260567 |
Author: 周杰 |
Hits:
Description: 由于时间紧迫及事先准备不足,编译器最后定型时暴露出不少问题及不足之处,主要有以下一些方面: 不支持数组数据类型,这是文法分析器设计时的一个疏漏,由于时间关系,最后只得把扫描器中已做好的相关的数组部分删去。 对于float数据类型的支持,直到语义分析都是正常的,也能生成相应的汇编代码,但由于我们对8086/8088指令系统本身了解不足,这样的汇编代码将只能做到含义上完全忠实于源程序,但不能运行。 对于局部变量的支持,则于时间紧迫,所有的局部变量全被处理成静态变量。使递归函数不能得到正确的结果。 对于函数调用语句,不进行参数匹配检查,如果参数数量不对,也将能通过编译,但运行时将产生非法操作。 对&& !等逻辑操作在最后生成代码时处理比较粗燥,生成的代码在逻辑复杂时将不能保证运行正常。 接下来有一些,不能说是缺陷,但必须说明的问题: 对于main函数,没有参数表,通回类型也必须为void,但如果写上参数表及其他返回类型也能编译通过,生成代码时将简单地忽略,不影响最后的代码的运行。 对于while,for,if语句,其语句体不管是一句还是多句,必须都有{}围起来。这跟C语言中若是一句则可省略{}不同。-Due to the time constraints and lack of preparation in advance, the compiler finalized when exposed numerous problems and shortcomings, mainly in the following aspects : no support for array data type, which is grammar analyzer design of an omission, because of the time, the final could only have scanners do phase customs array deleted. For float data types of support until semantic analysis is normal, and can generate the corresponding assembly code, but because of our 8086/8088 directive to the knowledge of the system itself, this compilation can do to code meaning entirely faithful to the source, but not running. For the support of local variables, in the time constraints, all local variables were all handled in the static variable. So recursive function will not get the right results.
Platform: |
Size: 260096 |
Author: 周杰 |
Hits:
Description: 简单C编译器生成的目标代码是8086的汇编代码(16位),可以在一般的PC上被像MASM之类的汇编编译程序编译,生成可执行文件后,在DOS或Windows控制台下运行。
实现的语言定义如下:
语言类似于tiny语言,不支持过程调用,也就是只有一个main函数,无其他函数和全局变量
基本语句:注释语句(/*…*/),输入语句(int input(void) ),输出语句(void output(int) ),赋值语句。这里的输入输出语句实际上类似于函数调用,可以看作是本语言内部的函数
算术运算符:+、—、*、/
数据类型:整数.-Simple C compiler generated object code is 8086 assembly code (16), the PC in general were such as MASM compilation compiler compiler to generate executable file, in DOS or Windows console run. The realization of the language are defined as follows: the language is similar to tiny language, do not support the procedure call, that is, there is only one main function, no other function and global variable basic statement: Note statement (/* ...* /), type the statement (int input (void )), the output statement (void output (int)), assignment statements. The input and output statements in fact similar to function calls, can be seen as a function of the language within the Arithmetic Operators: 2B !,-,*,/ data types: integer.
Platform: |
Size: 412672 |
Author: Tony |
Hits: