当前位置:首页 » 编程软件 » 计算所编译组

计算所编译组

发布时间: 2024-07-11 23:44:37

❶ 中国科学院计算技术研究所怎么样

很牛逼。

中国科学院计算技术研究所(Institute of Computing Technology, Chinese Academy of Science,简称ICT)创建于1956年,总部坐落于北京海淀区,中关村科学院南路六号。是中国第一个专门从事计算机科学技术综合性研究的学术机构。计算所研制成功了中国第一台通用数字电子计算机,并形成了中国高性能计算机的研发基地,中国首枚通用CPU芯片也诞生在这里。

计算所是中国计算机事业的摇篮。随着学科与技术发展,从计算所陆续分离出中科院微电子研究所、计算中心、软件研究所和计算机网络信息中心等多个研究机构,及联想、曙光等高技术企业。计算所是中国科学院“知识创新工程”首批试点单位。

计算所拥有计算机体系结构国家重点实验室、中国科学院智能信息处理重点实验室、中国科学院网络数据科学与技术重点实验室、移动计算与新型终端北京市重点实验室、国家并行计算机工程技术研究中心、国家高性能计算机工程技术研究中心。[1] 依托科研基地,计算所加强了原始创新研究、重大关键技术研究和产业化共性技术研究,以解决计算机学科中的重大科学和技术问题,为计算所的长远发展提供长期的、战略性的技术储备和基础,并培养一批高水平、高素质的学科带头人与学术团队。计算所正在发展成为由本部核心所和建在上海、洛阳、苏州、宁波、东莞等地的若干个分部组成的网络型研究所。
中国科学院计算技术研究所
计算技术研究所是中国第一个专门从事计算机科学技术综合性研究的学术机构,致力于计算机科学技术领域的科学发现和技术创新,为中国经济建设、国家安全和社会可持续发展不断做出基础性、战略性、前瞻性的重大创新贡献,努力成为社会公认的引领我国信息产业和信息化的计算技术主要源头。目前设立了计算机系统研究部、网络研究部、智能信息处理研究部,三个研究部下设十三个研究中心或实验室。[2]
计算机系统研究部研究方向包括:高端计算体系结构、微体系结构、编译编程、VLSI与容错计算、非传统体系结构、高性能计算机系统、高性能计算机系统应用环境、高性能计算应用、高性能处理器体系结构、IP及系统芯片(SoC)设计技术、低功耗处理器设计技术、处理器验证与测试技术、纳米级集成电路设计技术、高速信号传输技术、存储技术、计算机应用技术;网络研究部研究方向包括:云计算系统与基础设施、网络搜索与挖掘、舆情计算与内容安全服务、网络仿真与安全应用、网络科学与社会计算基础理论、移动互联网、可信互联网、传感器网络、低耗能无线通信基带芯片、协同无线通信与软件无线电技术、高速宽带移动通信技术、复杂异构移动通信网络控制、无线资源管理技术和新一代低功耗无线网络系统架构等;智能信息处理研究部研究方向包括:知识网格、智能科学、大规模知识处理、自然语言理解和翻译、基于图像的人机交互、多媒体信息的编码与理解、大规模高维数据可视化、智能感知与交互技术、情境计算、嵌入式与先进终端技术、高速数字信号处理技术、无线传输技术、数字内容处理技术、基于“龙芯”的低成本信息化应用集成技术、生物信息处理、跨媒体计算、虚拟现实、网格操作系统等。[1]
截至2013年底,计算所获得国家、院、市、部级科技奖励206项,其中,国家级科技奖励43项(含非第一完成单位7项),院、部级科技奖励163项(含非第一完成单位7项)。[1]

现任领导编辑

孙凝晖
男,博士,研究员。1968年3月出生,籍贯安徽寿县,1989年毕业于北京大学计算机系,随后进入中科院计算所攻读硕士学位,1992年硕士毕业后留所工作,1995年攻读在职博士,1999年获工学博士学位。1997年至2000年先后担任计算所智能中心研发部副主任、主任,2000年至2005年任国家智能计算机研究开发中心主任, 2005年至2009年先后担任计算所系统结构研究部主任、计算机系统结构重点实验室主任,计算所副总工程师(兼),所长助理(兼)等职务,2009年7月起任中科院计算所常务副所长,2011年7月起任中科院计算所所长。
孙凝晖研究员先后参加并领导了曙光一号并行计算机,曙光1000大规模并行机、曙光2000-I、曙光2000-II超级服务器、曙光3000超级服务器、曙光4000超级服务器、曙光5000A高效能计算机、曙光6000高性能计算机的研制,其中提出了一系列高性能计算机体系结构和系统设计方法,并行算法和应用的优化方法,多次获得国家和科学院科技进步奖,1999年获中国科学院青年科学家奖一等奖,2001、2003、2006年三次荣获国家科技进步二等奖,2005年获中国科学院杰出科技成就奖,2006年获得“中国青年科技奖”和“中国十大杰出青年”荣誉称号。
孙凝晖研究员主要从事计算机体系结构方面研究,发表论文100多篇,现担任中国计算机学会理事、高性能计算机专委会副主任,中国科学技术大学客座教授,计算机学报主编,Journal of Computer Science and Technology领域编委,计算机研究与发展编委。

李锦涛
男,博士,研究员,
李锦涛
1962年出生,现任中国科学院计算技术研究所党委书记、副所长(兼)、前瞻研究实验室主任(兼),计算所职代会和工会主席。李锦涛研究员于1986年考入计算技术研究所攻读博士学位,于1989年获得计算机应用专业博士学位后留所工作,并于1989-1990年在捷克斯洛伐克科学院做访问学者。李锦涛研究员在工作期间,先后被聘为研究员、博士生导师,北京市自然科学基金委员会副会长等。李锦涛研究员主要从事数字媒体处理技术、虚拟现实技术和普适计算技术领域的研究,先后承担了国家863计划、科技部国际科技合作、国家自然科学基金、北京市科技计划等项目,已申请40余项专利,出版着作2部,发表学术论文80余篇。他主持的智能化网络访问终端系统研究取得了重大突破,并在全国10多个行业取得了良好的应用,获得了北京市科学技术一等奖,是国务院政府特殊津贴专家。

隋雪青
男,研究员级高工,1964年出生,
隋雪青
现任中国科学院计算技术研究所副所长。1990年在国家智能计算机研究开发中心工作,参加曙光1号的应用开发,1995年进入曙光信息产业有限公司,从事国产曙光服务器的产业化推广工作。2001年调回计算所工作,历任技术发展处处长、所长助理,主要从事技术转移工作。先后以成立合资企业、建立孵化器进行技术入资,以成立计算所分部进行技术辐射,以技术拆分专利许可进行技术转让等多种方式进行技术转移与辐射。

陈熙霖
男,博士、研究员、博士生导师。1965年出生,现任中国科学院计算技术研究所副所长。1988年、91年和94年分别于哈尔滨工业大学计算机系获得学士、硕士和博士学位。毕业后留校任教,先后任讲师(1994)、副教授(1996)、教授(1999)。2001年5月至2004年5月在美国卡内基梅隆大学计算机学院访问。回国后入选中国科学院百人计划,先后任中科院计算所研究员、中科院智能信息处理重点实验室主任、副总工兼智能信息处理研究部主任、所长助理职务。主要研究领域为计算机视觉、模式识别、多媒体技术以及多模式人机接口。先后主持过自然科学基金重点项目、863计划等项目的研究工作。先后获得国家科技进步二等奖三项,省部级科技进步奖7项,获得国家发明专利四项,合作出版专着1本,在包括IEEE Transactions在内的国内外刊物和会议上发表论文100多篇。担任过十多个国际学术会议的程序委员会委员。

张光辉
男,博士,高级工程师。1964年出生,现任中国科学院计算技术研究所纪委书记兼党委副书记。1985年8月至2007年12月,在总参某部从事通信系统的国防科研与管理工作。多次参与国家和军队大型通信系统科研项目,涉及数字信号处理系统的DSP软硬件实现、通信装备的嵌入式系统设计、信源的编解码算法、信道纠错的软硬件实现、各类多址信号的调制与解调、宽带模拟信号与高数据率数字信号的实时采集与存贮、电子设备在线测试诊断技术等。作为主要贡献者,取得军队科技进步一等奖1项;以第一完成人的身份,取得军队科技进步二等奖3项。

学术委员会编辑
学术委员会是计算所的最高学术管理组织。[3]
名誉主任:夏培肃汪成为
主任委员:徐志伟
副主任委员:孙凝晖
委 员: (按姓氏音序排序)
陈熙霖 程学旗 方滨兴 高庆狮 胡伟武 李德毅 李国杰
李锦涛 李凯 李晓明 李忠诚 陆汝钤 孟丹 倪光南
倪明选 孙凝晖 王兆其 徐志伟 许鲁 赵伟 诸葛海
秘 书

研究实体编辑

计算机系统研究部
中国科学院计算技术研究所
计算机系统研究部成立于2005年11月,主要从事计算机系统相关领域的研究。
计算机系统研究部下设:
计算机体系结构国家重点实验室
微处理器研究中心
高性能计算机研究中心(国家智能计算机研究开发中心)
先进计算机系统研究中心(中科院计算所-华为联合实验室)
数据存储技术研究中心
计算机应用研究中心[4]
研究方向:
●计算机体系结构
●计算机系统
●高性能计算机
●服务器技术
●处理器技术
●编译技术
●并行算法和应用
●存储技术

中国科学院计算技术研究所
操作系统
●高性能嵌入式计算机系统
●地理信息系统与空间信息服务支撑技术

网络科学与技术研究部
网络科学与技术研究部下设:
网络数据科学与技术重点实验室
网络技术研究中心
无线通信技术研究中心(移动计算与新型终端北京市重点实验室)
专项技术研究中心[2]
信息科学技术正面临着系统化、跨越式发展新的临界点。网络科学所关注基本问题正是信息技术发展的趋势之一。网络科学与技术研究部针对新型网络基础设施平台、网络服务和网络信息安全保障等多层次实际需求,研究网络科学的基础理论体系、新一代网络通信互连标准与关键技术、网络体系结构与系统软件平台、惠及大众的低成本网络服务软件以及网络与信息安全关键技术与系统。 研究部下设科研实体包括:下一代互联网研究中心、信息智能与信息安全研究中心、网格与服务计算研究中心、传感器网络实验室与网络管理技术课题组。
研究部的主要研究方向包括:1、面向下一代网络通信、接入、互联研究。包括核心关键技术与标准的研究以及相应的实验网建设;2、面向服务和计算共享的新型网络体系结构研究。包括网络环境下的协作共享基础理论、系统软件平台与行业应用软件;3、新型网络环境下的网络与信息安全研究。包括网络信息内容安全、网络安全管理、可控可管的新型网络体系结构与信息安全保障体系的研究;4、网络科学基础理论及新一代网络服务基础理论与系统研究。
中国科学院计算技术研究所
研究部的主要目标包括:1、面向科学问题,形成网络科学与技术研究领域国际着名团队,在网络科学的基础理论、网络系统的专利标准等方面有一定的国际话语权;2、面向国家需求,承担国家网络信息安全保障、新一代网络基础设施平台以及国家级网格平台等方面的重要任务,建设完成一系列重大系统;3、面向广大的社会信息网络终端用户需求,研制惠及亿万网络群体的网络服务软件,提供低成本、社会化、智能化的网络信息服务。

智能信息处理研究部
智能信息处理研究部下设:
智能信息处理重点实验室
普适计算研究中心
前瞻研究实验室[2]
为我国信息技术的长期发展积累知识、创新技术和培养人才。智能信息处理研究部的主要研究方向包括:知识网格,涉及Internet上实现分布知识的共享、集成、运用和知识管理的模型、理论、方法体系以及平台和机制;海量知识库,涉及大规模知识获取与组织、基于知识的计算机艺术和自然语言处理、并行地理图象知识处理系统、NKI支撑下的应用研究;图像理解与识别,涉及人脸识别等生物特征识别技术以及人体行为分析技术;可视化与复杂数据展示,涉及大规模虚拟人与环境的建模与合成技术;多媒体分析与处理,涉及音视频数据的编码、分析理论与应用;多语言与多模态人机交互,涉及自然语言处理、评测与交互技术以及手语识别与合成等技术。
前瞻研究实验室创立于2005年11月,其目标聚焦在基础性、前瞻性和交叉学科研究,与国内外研究团队的合作研究,推动计算所在信息技术领域和交叉学科研究的持续发展;为计算所的长远发展奠定人才基础。 前瞻研究中心实行“机构开放、人员流动、公平竞争、择优支持、鼓励创新”的运行机制,旨在营造一个“创新、求实、高效、和谐”的研究氛围,倡导敢为天下先、勇于开拓、容忍失败的创新理念,努力把中心建成知识创新骨干人才的培养基地和基础性、前瞻性计算技术研究的乐园。
中国科学院计算技术研究所
首批进入前瞻研究实验室的研究实体包括信息检索课题组和影视动漫关键技术课题组等。
普适计算研究中心创立于2007年3月,其目标聚焦在面向低成本信息化重大需求的相关先进技术研发上。
普适计算研究中心为所直属研究中心,由普适研究中心所级领导小组具体指导中心的工作。中心坚持“团结进取、务实创新”的原则,协调并集中网络终端方面的资源和力量,紧密结合应用需求,努力承担国家重大专项,争取成为国家级先进普适终端方向的工程技术中心。
首批进入普适计算研究中心的科研实体包括媒体计算课题组、网络终端课题组以及实时信号处理课题组。

管理部门编辑

综合处
综合处是计算所的中心枢纽,它对外代表计算所的形象,对内是联系工作的窗口,肩负着综合、协调、管理、服务等多方面的职能。
行政工作:主要负责代表法人单位的印章管理、公文管理、办公用房的管理、职工宿舍的管理、房产管理、住房补贴的发放、职工体检安全保卫、科研环后勤境的支撑保障等工作。
党务工作:主要负责党务、纪检监察、统战和群众等工作。
基建园区建设:主要负责计算所新园区的建设。
宣传工作:主要负责代表法人单位的政务信息、宣传、科普、网站等工作,同时承担所刊《创新·求实》编制、所中文网站的内容建设和系统管理等工作。
所务工作:所务会、所长办公会相关工作;所内外重要联络工作。[5]

人力资源处
本着“用好现有人才,稳定关键人才,引进急需人才,培养未来人才”的原则,为计算所发展战略目标的实施及加强科技创新队伍建设,提供有力的人才和组织保证。主要工作有:人员的招聘与配置工作;岗位聘任、专业技术职务评聘工作;员工培训和继续教育工作;薪酬管理;员工福利和社会保险的管理;员工的绩效考核的管理;人力资源信息系统的管理;人事档案的管理;各类专业人才培养计划(“百星计划”、“定向培养制度”“人力资源基金”、“出国留学基金”等);“百人计划”的招聘工作;科技副职的选派和管理;“西部之光”人才项目的引进与管理;外国专家的引进工作;王宽诚项目的申请与管理;各类公派留学的申请与管理;人事印章管理等。[6]

科研处
科研处是所务会领导下的一个执行机构,是所务会有关科研工作决议的执行者和推动者,代表所务会对计算所与科研相关的重大活动进行必要的策划、组织、协调和管理,为科研人员工作的开展提供所需的服务和支撑,规范计算所的科研工作。
科研处下设机构包括:学术规划办公室、科研项目(军工)办公室、科研管理办公室(含保密办公室、综合档案室、质量管理办公室)
学术规划办公室职责:负责全所科研与学术战略与规划的研究、制定与调整,组织全所春秋两季战略规划会的举办;承担所学术委员会日常工作事务,负责全所所级学术报告的发布、组织与管理;承担全所科技论文和专着的统计、优秀学术论文的评选;负责国际合作和外事管理,包括办理因公出国的手续、国际会议的举办以及其他与国际合作有关的事宜;与科研管理办共同负责每年科学院组织的研究所评估工作等。
科研项目(军工)办公室职责: 围绕计算所的科学发展战略及科研规划,负责全所科研项目(含军工)的策划、争取以及军工产品生产的组织管理、产品交付及交付后的跟踪等;负责装备承制单位资格、武器装备科研生产许可证的申请、自查、整改等。
科研管理办公室职责:负责科研项目立项到结题的全过程管理;负责全所纵向课题(国家基金委、科技部(含863计划、973计划、科技支撑计划)、科学院、国家其它部委、地方政府等)的申报组织工作;负责课题的合同评审工作;负责除知识产权外的科技成果的管理(包括成果的验收、鉴定、登记、奖励申报等);负责重点实验室、国家工程实验室与国家工程中心的管理;与学术规划办共同负责研究所评估;负责科技部和科学院的综合统计等。
保密办公室职责:负责组织宣传贯彻上级有关保密工作的方针、政策和法律法规;制定和组织落实保密委员会工作计划;开展全所保密日常管理;监督、指导和检查各单位(部门)保密管理工作情况;提出年度保密培训计划和协同人力资源处开展保密教育;监督全所实施各项保密审查审批;完成全所保密档案。
综合档案室职责:负责全所综合档案管理,监督、指导实体(部门)各类档案预立卷工作,督促全所各类档案材料归档,完成全所各类档案分类、整理、装订、立卷和数据录入、编目、上架等工作,实现对全所各类档案的规范管理,为全所各项工作提供档案查询、利用服务。
质量管理办公室职责:归口管理计算所质量和标准化相关工作。组织质量管理体系的建立、运行和持续改进,组织质量管理相关文件的制定与修改,组织质量管理体系的内外部审核,监督质量管理体系的运行状况;负责重点项目的质量监控与跟踪,组织质量问题的归零处理;负责出所检验、合格证签发及质量证明文件提供;负责重点项目的标准化审查、组织企业标准制定及国家、行业标准的推广应用工作;负责全所质量相关工作的宣传与培训;计算所质量相关工作的外部联络。[7]

技术发展处
技术发展处是计算所为实现技术转移和孵化所设立的专门机构,是技术转移工作的规划者、监督者、协调者和服务者。技术发展处下设知识产权办、技术转移办,分别担负计算所技术转移工作中涉及到的不同职责。
技术发展处通过产业关键技术、技术入股、专利许可、技术孵化和院地合作等不同方式与社会各界进行了泛合作。在技术发展处的推动下,计算所在科研成果孵化方面取得了较大成绩,例如:通过大力开展院地合作,从2002年开始,先后与地方政府合作成立了苏州分部、上海分部、肇庆分部、宁波分部、台州分部和东莞等分部,共计吸引当地政府与企业资金2.2亿元,这些分部不仅推动了计算所的成果辐射面,也成为当地科技建设的中坚力量;通过科研成果转化参股创立北京神州龙芯集成电路设计有限公司、北京神州天脉网络计算机有限公司等多家高科技公司,为科研成果的产业化贡献力量;同时,在对外合作中还承担了Intel、Nokia、联想等知名企业委托的许多高科技研究开发课题。
技术发展处各办公室主要职能设置介绍如下:
技术转移办:技术转移办主要负责计算所在技术转移过程中执行层面的工作,兼有管理和拓展业务两方面的职能,负责包括融资与企业孵化、技术许可与转让、分部管理、参股公司管理和企业联合实验室管理、企业合作的横向实验室管理等科研成果产业化的各项工作。计算所分部的管理和计算所科研成果在分部所在区域的成果辐射与转化。
知识产权办:主要负责工作包括专利分析与专利策略、知识产权管理、专利技术许可政策、标准策略与推进及与知识产权密切相关的合同审查和法律事务等工作,其职能贯穿科研选题立项-研发中期-形成科研成果-技术转移全过程。[8]

研究生部
研究生部是所务会和所党委领导下的、执行所学位评定委员会和教育工作指导小组有关研究生教育工作决议的教育管理职能部门。本部门的主要职责是:
1.贯彻落实中科院研究生院关于研究生教育与培养的方针、政策;
2.紧密配合本所发展战略,坚持“以人为本”,德、智、体、美全面发展的原则,以培养具有“科研为国分忧,创新与民造福”精神的IT领域领军型人才和创业者为特色,开展计算所教育品牌建设;
3.规范教育管理工作,内容包括:制定教育发展规划、招生工作、研究生思想政治工作、学生住宿、学籍及档案管理、课程建设、助学金/奖学金、论文答辩、导师遴选与培训上岗、学生社团、就业指导、博士后进出站、受理同等学力人员申请学位、客座学生、同学会、教育基金会管理等;
4.开展对研究生教育工作的研究。[9]

财务资产处
财务资产处是按照国家财经政策,负责做好全所经济事项的会计核算、执行财务、资产管理制度,提高财务管理水平,合理用好用活各项资金、实现资产保值、增值的职能部门。
其工作职责为: [10] (1)根据计算所战略发展规划制定财务工作规划,根据研究所年度计划,在所长授权范围内,汇总并调整各部门预算,编制年、季度财务预、决算并监督执行;
(2)合理配置财务机构和人员,确保高效率的管理和服务;
(3)根据国家法律法规,制定并完善全处的管理制度和工作程序并监督执行;
(4)负责研究所资金的运筹、调配、核算等工作;
(5)定期进行研究所财务状况分析,及时、准确地报告重大财务风险并提出解决方案;
(6)负责研究所各类项目的预算评估、成本核算和控制,并且对项目的财务风险实施监控;
(7)建立规范的核算体系,及时、准确、完整地提供财务、资产信息;
(8)负责国有资产年报、年检、产权变动登记;
(9)负责对分部和下属企业以及基建项目有关财务的监督管理。
(10)负责全所属固定资产(仪器、设备、家具)的管理。
(11)组织和配合科研项目等各类审计工作;

支撑部门编辑

科研支撑中心
科研支撑中心是在所务会领导下的执行机构,于2009年11月成立,是进一步加强我所科技创新基础平台建设的一个重大改革举措,负责全所科研支撑体系的建设。
科研支撑中心的主要职责包括:全所公共科研支撑平台建设、运维服务和管理工作;全所网络环境建设规划、实施与日常维护、技术支持;全所信息化工作规划与实施推进管理(包括网络信息安全日常管理与定期检查);图书期刊的购入管理与借阅服务;图书、资料数字资源建设与管理维护;文献检索与全文传递服务;公共EDA设计平台建设与运行管理;集成电路相关公共资源库的建立、使用服务与管理;EDA 相关渠道管理;集成电路设计服务等;负责《计算机研究与发展》、《计算机学报》、《Journal of Computer Science and Technology》、《计算机辅助设计与图形学学报》四个学术期刊的出版工作等。
中心拥有一套13万亿次计算能力、270TB共享存储空间的共享计算平台和20多台高速信号传输、集成电路验证加速、硬件调试测试实验室设备和防静电实验环境,提供基于虚拟化和云技术的统一IT支撑服务、同构千核实验环境和全流程EDA设计技术服务。图书情报方面能够提供多元化的图书情报服务,包括图书资料查阅、项目查新、影响力分析等知识化服务,定期出版的《信息技术快报》为计算机界同行及企业和政府的决策者了解计算所科研工作的窗口。四个学术刊物多年来一直排名国内计算机专业前列,多次获得国家科技期刊奖项和基金资助。

成果介绍编辑
到2006年底,全所共取得科技成果593项,共获国家、院、市、部级科技奖励:203项,其中:国家级科技奖励33项,院、部级科技奖励145项。
农村科技远程教育和信息主动推送的集成系统
基于龙芯CPU的大规模并行计算机系统的关键技术研究
基于龙芯的SMP芯片组及其相关系统的研究
中国科学院计算技术研究所
虚拟计算环境的关键技术研究
动态容灾模型及其关键技术研究
语义与知识网格的理论及应用研究
蛋白质质谱鉴定中的优化问题
支持移动、漫游的多媒体会晤业务系统
基于三维人体运动仿真与视频分析的计算机辅助运动系统及示范应用
基于IPv6移动话音业务关键技术试验
新一代机群关键技术研究
中科SoC芯片系列化关键技术研究
可互操作空间数据引擎的高速通道研究
能力服务器——低成本信息化技术
网络化内存关键技术及原型系统研究
无线传感器网络系统级关键技术研究及两个典型示范应用
新型结构龙芯CPU研究
蓝鲸网络存储技术成果转化
生物运行机制的形式化描述探索
车载综合信息处理与红外安全系统的研制和智能交通信息交互的研究

❷ 编译器是什么

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE,
所以我们电脑上的文件都是经过编译后的文件。

❸ 用C语言编译数学运算

这个是我的实验报告,跟你的这个一样的。如果只要代码的话就看最后面的。我感觉应该算比较全面的。你看看,有什么具体要求可以提出来。
一、需求分析
1、 功能:疏如一行表达式,若表达式有误,则输出“表达式有错” ,否则计算出表达式的值并输出。 运算符包括加、减、乘、除、乘方、一目减。 括号均为小括号,但可以层层嵌套。操作数可以是浮点数,也包括有多个字母组成的变量。
2、 输入的形式为表达式,按回车结束。输入值的范围不超过浮点数的范围。含有变量,变量名由字母组成,大小写不限。
3、 若计算结果为整数,则输出整数,若含有小数,则输出浮点数。
二、概要设计
1、 总体思路,先读入一行表达式,用一个字符数组存储。然后依次读每个字符,进行判断。边读入边进行计算。程序中用到了两个栈,一个字符栈以及一个数字栈,分别用来存储运算符和数字,根据运算符的优先顺序进行计算。最后输出结果。

2、程序包括几个模块,主函数和几个基本函数。
说明几个函数:
bool stackempty(save1 s)用来判断操作数栈s是否为空。
void push(save1 &s,char e)若栈满则输出“栈已满”,否则将元素e入栈
void pop(save1 &s, char &e)若栈为空则输出“栈为空”,否则将栈顶元素赋给e
bool stackempty2(save2 s)用来判断运算符栈s是否为空。
void push2(save2 &s, char e)若运算符栈满则输出“栈已满”,否则将元素e入栈
void pop2(save2 &s, char &e)若栈为空则输出“栈为空”,否则将栈顶元素赋给e
int in(char e)返回运算符e在栈内的优先级别
int out(char e) 返回运算符e在栈外的优先级别
void count(char a,char ope, char b)将a、b进行相应的运算,并将运算结果入栈
3、具体操作步骤:
1、先读入一行表达式,用一个字符数组line[]存储
2、依次读入每个字符并进行处理同是进行表达式判错:
1. 遇数字,则继续判断下一个字符,直到下一个字符不是数字且不是小数点,若该数含有两个小以上数点,则表示输入错误。否则即可保证该操作数是完整的浮点数,然后将该数入操作数栈。

若数字不是表达式的最后一位,且数字后面跟的不是“+、-、*、/、^、)”,则为表达式错误

2. 遇运算符,则分两种情况:
1、若运算符为负号(该运算符为符号的情况有两种:一为负号在最开头,一为符号前面是“(” ),则先将0入操作数栈,然后再将负号入运算符栈。
2、该运算符不是负号则与运算符栈的栈顶元素比:
(1) 若栈顶元素优先级低, 新输入的运算符入栈。
(2) 若栈顶元素优先级高,
1) 从符号栈弹出一个运算符,
2) 从对象栈弹出一个/两个操作数,
3) 运算结果压入对象栈。
(3) 优先级相等,则栈顶元素出栈,与输入元素对消。

若“(、+、-、*、/、^”放在表达式最后面,则表达式错误
若“+、-、*、/、^”后面跟的不是数字或者变量,表达式错误

3、遇字母变量,则继续判断下一个字符,直到下一个字符不是字母变量,即可保证该变量是完整的,然后输出“请输入变量的值”,再将输入的变量值入操作数栈。
若变量后面跟的不是“+、-、*、/、^、)”,则表达式错误
4、若所读的该字符不是上述情况中的一种,则表达式错误

3、当将所有的字符都读一遍之后,若表达式正确的话,则必然不含有“(”或者“)”。即若运算符栈中含有“(”或者“)”,则表达式必错误。 再考虑表达式正确的情况:运算符栈可能为空,则操作符栈中必剩下一个操作数,即最后的结果。若不为空,则留在运算符栈中的运算符的优先级别从栈顶至栈底依次递减。故可从运算符栈顶开始弹出一个运算符,从操作数栈中弹出两个操作数进行运算,再将运算结果入操作数栈,一直循环至运算符栈为空。此时操作数栈剩下的唯一一个操作数就是运算结果。

三、结论及体会
1、实验结论
a)、实验完成了题目的要求,自己添加了对浮点数的操作,并进行判错。
b)、编写代码基本上能够满足编程规范的要求,代码的变量命名,以及注释的书写,基本能按照要求进行。
b)、将数据结构中的队列和堆栈的知识复习到,并且学会创新,在代码的编写中,学习了编程规范,学习了结构化编程。

2、实验体会
a)、通过本设计实验将数据结构中的堆栈和队列的知识复习到,并且能够自己设计一些东西,学会了在设计实验过程时的基本步骤。基本上能够有条理的解决这些问题。
b)、在试验中遇到了很多的问题,都是以前没有发现的,这些问题设计的方面很多,有以前的C++基础的,也有最近学习的数据结构的知识。通过实验的设计,让我发现了自己的不足。自己在学习知识上面的漏洞。自己在细节方面的考虑还不够全面,很多细节都是通过调试才发现的。比如刚开始时忘了考虑变量之前有负号的情况以及将整个式子读一遍之后,栈中的操作数可能还有剩,还得继续进行计算等。希望通过弥补这些发现的漏洞,提高自己的专业知识水平。
c)、设计过程中的解决问题的方法,让我明白了如何学习会更有效。如何学习才不会耽误太多的时间。也学会了解决问题的一般方法:向老师、同学请教,借助网络等等。
d)、实验过程中也走了很多的弯路,由于在开始设计的时候思路不时很清晰,对于一些问题不能很好的提出解决问题的方法,在设计过程中,代码总是重复的修改,在很多问题上,代码并不时最优的。相信在以后的学习中,随着知识的增多,问题会逐渐得到解决。
四、程序源代码
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
#define MAX 1000

struct save1
{
float n[MAX];
int top;
}stack1;

struct save2
{
char n[MAX];
int top;
}stack2;
//stack1存储数字,stack2存储运算符号.

bool stackempty(save1 s)//判断是否为空
{
if (s.top== -1)
return 1;
else
return 0;
}

bool stackempty2(save2 s)//判断是否为空
{
if (s.top== -1)
return 1;
else
return 0;
}

void push(save1 &s,float e)//将e入栈
{
if(s.top==MAX-1)
{
cout<<"栈已满"<<endl;
return ;
}
s.top++;
s.n[s.top]=e;
}

void push2(save2 &s,char e)//将e入栈
{
if(s.top==MAX-1)
{
cout<<"栈已满"<<endl;
return ;
}
s.top++;
s.n[s.top]=e;
}

void pop(save1 &s,float &e)//将栈顶元素出栈,存到e中
{
if(s.top==-1)
{ cout<<"栈为空"<<endl; }
else
{e=s.n[s.top]; s.top--; }
}

void pop2(save2 &s,char &e)//将栈顶元素出栈,存到e中
{
if(s.top==-1)
{ cout<<"栈为空"<<endl; }
else
{e=s.n[s.top]; s.top--; }
}

int in(char e)//e在栈内的优先级别
{
if(e=='-' || e=='+') return 2;
if(e=='*' || e=='/') return 4;
if(e=='^') return 5;
if(e=='(') return 0;
if(e==')') return 7;
return -1;
}

int out(char e)//e在栈外的优先级别
{
if(e=='-' || e=='+') return 1;
if(e=='*' || e=='/') return 3;
if(e=='^') return 6;
if(e=='(') return 7;
if(e==')') return 0;
return -1;
}

void count(float a,char ope,float b)//进行计算并将计算结果入栈
{
float sum;
if(ope=='+') sum=a+b;
if(ope=='-') sum=a-b;
if(ope=='*') sum=a*b;
if(ope=='/') sum=a/b;
if(ope=='^') sum=pow(a,b);
push(stack1,sum);
}

int main()
{
int i=0,len,j,nofpoint,g=0;//len表示输入式子的长度。 g表示读入的字符是否是字母变量、数字以及运算符。
float a,b;//a、b用来存储操作数栈中弹出的操作数,便于代入函数中进行计算。
char line[MAX],operate,temp[20];
cout<<"请输入表达式"<<endl;
cin>>line;
len=strlen(line);
stack1.top=-1;//将栈置为空
stack2.top=-1;//将栈置为空
while(1)
{
g=0;
if(isdigit(line[i]))//若读入的字符为数字,则继续判断下一个字符,直到下一个字符不是数字或者不是小数点,即可保证该操作数是完整的小数,然后将该数入操作数栈。
{
j=0; g=1;
nofpoint=0;//记录所存的数中小数点的个数
while(isdigit(line[i]) || line[i]=='.')
{
if(line[i]=='.') nofpoint++;
temp[j++]=line[i];
i++;
if(i>=len) break;
}
if( nofpoint>1 || (i<len&&(line[i]!='-' && line[i]!='+' && line[i]!='*' && line[i]!='/' && line[i]!='^' && line[i]!=')')) )
{ cout<<"表达式有错"<<endl; return 0; }//所存数中含有不止一个小数点,或者数字后面跟的不是“+、-、*、/、^、)”,则为错误

temp[j]='\0';
b=atof(temp);
push(stack1,b);
if(i>=len) break;
}
else
{
if(line[i]=='-' || line[i]=='+' || line[i]=='*' || line[i]=='/' ||
line[i]=='^' || line[i]=='(' || line[i]==')' ) //若读入的字符为运算符的情况
{
g=1;
if(line[i]=='(' && i==len) { cout<<"表达式有错"<<endl; return 0; }// “(”放表达式最后面,错误
if(line[i]=='-' || line[i]=='+' || line[i]=='*' || line[i]=='/' || line[i]=='^')
{
if(i==len) { cout<<"表达式有错"<<endl; return 0; }//“+、-、*、/、^”放在表达式最后面,错误
if( (!isdigit(line[i+1])) && (!isalpha(line[i+1])) && line[i+1]!='(')//“+、-、*、/、^”后面跟的不是数字或者变量,错误
{ cout<<"表达式有错"<<endl; return 0; }
}

if(line[i]=='-' && (i==0 || line[i-1]=='(' ))//运算符是负号
{
push(stack1,0);
push2(stack2,line[i]);
i++;
}
else
{ //读入的运算符与运算符栈的栈顶元素相比,并进行相应的操作
if(in(stack2.n[stack2.top])<out(line[i])||stackempty2(stack2)) { push2(stack2,line[i]);i++;}
else
if(in(stack2.n[stack2.top])==out(line[i])) {i++; stack2.top--;}
else
if(in(stack2.n[stack2.top])>out(line[i]))
{
pop(stack1,a);
pop(stack1,b);
pop2(stack2,operate);
count(b,operate,a);
}
if(i>=len) break;
}
}
else
{
if(isalpha(line[i]))//读入的字符是字母变量的情况
{
g=1;
cout<<"请输入变量";
while( isalpha(line[i])) { cout<<line[i]; i++; }
cout<<"的值"<<endl;
cin>>b;
push(stack1,b);
if(i>=len) break;
if(line[i]!='-' && line[i]!='+' && line[i]!='*' && line[i]!='/' && line[i]!='^' && line[i]!=')')//变量后面跟的不是“+、-、*、/、^、)”,则为错误
{ cout<<"表达式有错"<<endl; return 0; }
}
}
}
if(g==0) { cout<<"表达式有错"<<endl; return 0; }//g=0表示该字符是不符合要求的字符
}

while(stack2.top!=-1)//读入结束后,继续进行操作,直到运算符栈为空
{
pop(stack1,a);
pop(stack1,b);
pop2(stack2,operate);
if(operate=='(' || operate==')') //括号多余的情况
{ cout<<"表达式有错"<<endl; return 0; }
count(b,operate,a);
}
cout<<stack1.n[stack1.top]<<endl;
return 0;
}

热点内容
校园论坛源码 发布:2024-11-26 05:42:35 浏览:567
民生银行pin密码是多少 发布:2024-11-26 05:31:24 浏览:774
sql获取日期部分 发布:2024-11-26 05:25:06 浏览:742
怎么才能把安卓数据转移到苹果手机上 发布:2024-11-26 05:14:35 浏览:850
手机对比参数配置常看的有哪些 发布:2024-11-26 05:01:23 浏览:890
qq默认存储路径修改 发布:2024-11-26 04:55:02 浏览:709
为什么吉利配置那么高 发布:2024-11-26 04:49:20 浏览:430
源码平台排名 发布:2024-11-26 04:44:49 浏览:998
电脑网络连接密码如何更改 发布:2024-11-26 04:39:20 浏览:203
安卓手机如何设置airpro自动弹窗 发布:2024-11-26 04:39:17 浏览:585