中间代码生成-南京大学计算机科学与技术系.ppt

中间代码生成-南京大学计算机科学与技术系.ppt

* * * * 例子 表达式:c+a[i][j] 类型检查和转换 类型系统: 给每一个组成部分赋予一个类型表达式 通过一组逻辑规则来表示这些类型表达式必须满足的条件 可发现错误、提高代码效率、确定临时变量的大小、… 类型系统的分类 类型综合 根据子表达式的类型构造出表达式的类型 if f 的类型为s?t且x的类型为s then f(x)的类型为t 类型推导 根据语言结构的使用方式来确定该结构的类型: if f(x)是一个表达式 then 对于某些类型α,β;f的类型为α?β且x的类型为α 类型转换 假设在表达式x*i中,x为浮点数、i为整数,则结果应该是浮点数 x和i使用不同的二进制表示方式 浮点*和整数*使用不同的指令 t1 = (float) i t2 = x fmul t1 类型转换比较简单时的SDD: E?E1 + E2 { if(E1.type = integer and E2.type = integer) E.type = integer; else if (E1.type = float and E2.type= integer) E.type = float;} } 这个规则没有考虑生成类型转换代码 类型的widening和narrowing Java的类型转换规则 编译器自动完成的转换为隐式转换,程序员用代码指定的转换为显式转换。 处理类型转换的S

文档评论(0)

1亿VIP精品文档

相关文档