编译器高级研究的理想平台
在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 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络