编译器高级研究的理想平台
在20世纪90年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。
大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。
1 package Com.Table; 2 3 public abstract class TwelveTable { 4 abstract int area(); 5 abstract int perimeter(); 6 } 7 8 9 class Rect extends TwelveTable 10 { 11 int length; 12 int wight; 13 public int getLength() { 14 return length; 15 } 16 17 public void setLength(int length) { 18 this.length = length; 19 } 20 21 public int getWight() { 22 return wight; 23 } 24 25 public void setWight(int wight) { 26 this.wight = wight; 27 } 28 29 @Override 30 int area() { 31 32 return length * wight; 33 } 34 35 @Override 36 int perimeter() { 37 return (length + wight) * 2; 38 } 39 } 40 41 42 class Trangle extends TwelveTable 43 { 44 int aSide; 45 int bSide; 46 int cSide; 47 48 public int getaSide() { 49 return aSide; 50 } 51 52 public void setaSide(int aSide) { 53 this.aSide = aSide; 54 } 55 56 public int getbSide() { 57 return bSide; 58 } 59 60 public void setbSide(int bSide) { 61 this.bSide = bSide; 62 } 63 64 public int getcSide() { 65 return cSide; 66 } 67 68 public void setcSide(int cSide) { 69 this.cSide = cSide; 70 } 71 72 @Override 73 int area() { 74 int s = (aSide + bSide + cSide) / 2; 75 double area = (double) (s * (s - aSide) * (s - bSide) * (s - cSide)); 76 return (int) Math.pow(area, 0.5); 77 } 78 79 @Override 80 int perimeter() { 81 return aSide + bSide + cSide; 82 } 83 } 84 85 86 87 class Round extends TwelveTable 88 { 89 int Rides; 90 91 public int getRides() { 92 return Rides; 93 } 94 95 public void setRides(int rides) { 96 Rides = rides; 97 } 98 99 @Override 100 int area() { 101 return (int) (Rides * Rides * 3.14); 102 } 103 104 @Override 105 int perimeter() { 106 return (int) (2 * Rides * 3.14); 107 } 108 } 109 110 111 class ExObj 112 { 113 public static void main(String []args) 114 { 115 Rect rc = new Rect(); 116 rc.setLength(3); 117 rc.setWight(4); 118 System.out.println("矩形面积 = " + rc.area() 119 + ",矩形周长 = " + rc.perimeter()); 120 121 Trangle tg = new Trangle(); 122 tg.setaSide(3); 123 tg.setbSide(4); 124 tg.setcSide(5); 125 System.out.println("三角形面积 = " + tg.area() 126 + ",三角形周长 = " + tg.perimeter()); 127 128 Round rd = new Round(); 129 rd.setRides(2); 130 System.out.println("圆面积 = " + rd.area() 131 + ",圆周长 = " + rd.perimeter()); 132 } 133 }