1. 程式人生 > >編譯器高級研究的理想平臺

編譯器高級研究的理想平臺

mat 編譯 spa pri 開放 println bsp tran nds

在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 }

編譯器高級研究的理想平臺