{"title":"清晰度MCode:用于编译的可重目标中间表示","authors":"B. Lewis, L. Deutsch, Theodore C. Goldstein","doi":"10.1145/202529.202542","DOIUrl":null,"url":null,"abstract":"The Clarity C++ programming language is a dialect of C++ being developed in Sun Micro-systems Laboratories to support the development of reliable systems and application software, and especially distributed software. We have developed a high-level, machine-independent intermediate representation to compile Clarity that we call MCode (for \"middle code\"). We use MCode to compile Clarity programs at program runtime (i.e., on-the-fly) into SPARC - code for the Solaris TM operating system. The runtime code generator produces good quality machine code and is designed to be easily retargetable to new machines. We also support an interpreter for MCode that supports full interoperation with C code and existing C libraries. The choice of whether to compile or interpret MCode is done at runtime on a procedure-by-procedure basis. MCode is significantly more compact than native machine code. This fact, plus our ability to selectively interpret seldom-exe-cuted code instead of compiling it, means that MCode programs have a smaller working set and run better with less memory than the corresponding native machine code programs. In order to support systems programming, we store MCode in platform-standard object files. This enables MCode programs to fully interoperate with existing C libraries and code. It also allows programmers to use standard linkers and other program development tools with MCode object files.","PeriodicalId":398799,"journal":{"name":"ACM SIGPLAN Workshop on Intermediate Representations","volume":"56 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1995-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":"{\"title\":\"Clarity MCode: a retargetable intermediate representation for compilation\",\"authors\":\"B. Lewis, L. Deutsch, Theodore C. Goldstein\",\"doi\":\"10.1145/202529.202542\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The Clarity C++ programming language is a dialect of C++ being developed in Sun Micro-systems Laboratories to support the development of reliable systems and application software, and especially distributed software. We have developed a high-level, machine-independent intermediate representation to compile Clarity that we call MCode (for \\\"middle code\\\"). We use MCode to compile Clarity programs at program runtime (i.e., on-the-fly) into SPARC - code for the Solaris TM operating system. The runtime code generator produces good quality machine code and is designed to be easily retargetable to new machines. We also support an interpreter for MCode that supports full interoperation with C code and existing C libraries. The choice of whether to compile or interpret MCode is done at runtime on a procedure-by-procedure basis. MCode is significantly more compact than native machine code. This fact, plus our ability to selectively interpret seldom-exe-cuted code instead of compiling it, means that MCode programs have a smaller working set and run better with less memory than the corresponding native machine code programs. In order to support systems programming, we store MCode in platform-standard object files. This enables MCode programs to fully interoperate with existing C libraries and code. It also allows programmers to use standard linkers and other program development tools with MCode object files.\",\"PeriodicalId\":398799,\"journal\":{\"name\":\"ACM SIGPLAN Workshop on Intermediate Representations\",\"volume\":\"56 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1995-03-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"11\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"ACM SIGPLAN Workshop on Intermediate Representations\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/202529.202542\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM SIGPLAN Workshop on Intermediate Representations","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/202529.202542","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Clarity MCode: a retargetable intermediate representation for compilation
The Clarity C++ programming language is a dialect of C++ being developed in Sun Micro-systems Laboratories to support the development of reliable systems and application software, and especially distributed software. We have developed a high-level, machine-independent intermediate representation to compile Clarity that we call MCode (for "middle code"). We use MCode to compile Clarity programs at program runtime (i.e., on-the-fly) into SPARC - code for the Solaris TM operating system. The runtime code generator produces good quality machine code and is designed to be easily retargetable to new machines. We also support an interpreter for MCode that supports full interoperation with C code and existing C libraries. The choice of whether to compile or interpret MCode is done at runtime on a procedure-by-procedure basis. MCode is significantly more compact than native machine code. This fact, plus our ability to selectively interpret seldom-exe-cuted code instead of compiling it, means that MCode programs have a smaller working set and run better with less memory than the corresponding native machine code programs. In order to support systems programming, we store MCode in platform-standard object files. This enables MCode programs to fully interoperate with existing C libraries and code. It also allows programmers to use standard linkers and other program development tools with MCode object files.