This paper describes the architecture of the Ada Language System (ALS) Ada compiler front end. It examines the motivation for the architecture chosen and how this architecture has affected the implementation. The paper also examines the use of the intermediate language Diana, how Diana has affected the architecture, and issues that were encountered using Diana. Finally, the paper looks at how the upgrade to Ada '82 will be handled in the ALS compiler front end.
{"title":"The als Ada compiler front end architecture","authors":"Richard Simpson","doi":"10.1145/3304133.3304147","DOIUrl":"https://doi.org/10.1145/3304133.3304147","url":null,"abstract":"This paper describes the architecture of the Ada Language System (ALS) Ada compiler front end. It examines the motivation for the architecture chosen and how this architecture has affected the implementation. The paper also examines the use of the intermediate language Diana, how Diana has affected the architecture, and issues that were encountered using Diana. Finally, the paper looks at how the upgrade to Ada '82 will be handled in the ALS compiler front end.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"71 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122013547","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
It is shown how Ada can be used to good advantage as a design language in conjunction with the structured analysis and design methodology.
它展示了如何将Ada作为一种设计语言与结构化分析和设计方法相结合,发挥良好的优势。
{"title":"Ada design language for the structured design methodology","authors":"Dr. J. P. Privitera","doi":"10.1145/3304133.3304144","DOIUrl":"https://doi.org/10.1145/3304133.3304144","url":null,"abstract":"It is shown how Ada can be used to good advantage as a design language in conjunction with the structured analysis and design methodology.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116664077","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A runtime supervisor is an Ada package in the standard environment which provides a scheduling interface between a compiled tasking program and the virtual machine upon which it is to execute. Its visible operations implement the more complex aspects of the tasking dynamic semantics. These operations are very high level in the sense that they conform closely to Ada tasking constructs. Internal to the supervisor is a small kernel of machine dependent code providing the actual interface to the target virtual machine. Given this kind of runtime environment, the compiled code of a tasking program is equivalent to the code generated by a compilation of sequential Ada constructs with embedded calls to the supervisor visible operations. All parallelism is abstracted out of the program prior to the code generation phase of the compilation, and the implementation of the parallel constructs of the Ada language is shifted into the runtime supervisor package. While the form of the sequential Ada code implementing tasking constructs will depend on design decisions made by the implementors of specific compilers as in [3] and [5], a carefully designed supervisor will be compatible with the code generated by any Ada compiler calling that supervisor's visible operations in the specified manner. The benefits of this approach, which was originally adopted for the design of the experimental Adam compiler [4], are apparent. Target machine dependent aspects of scheduling, and details of scheduling strategies are separated from compilation. The code generation phase of the Ada compiler is greatly simplified by factoring out all tasking related routines. Compiler builders need not reimplement all of tasking for each new compiler or intended target machine. In addition, experimental and special purpose supervisors will gain wider distribution and evaluation due the portability inherent in this approach. In this paper we analyze the feasibility of implementing a runtime supervisor in Ada, pointing out those areas in which the Ada language is weak for this purpose. We then derive a standard supervisor interface on the basis of a (hopefully) minimal set of facilities to be provided by any supervisor. In this derivation, we consider in detail both what must be provided if a supervisor is to implement the full tasking semantics, and also in what ways we can minimize constraints on compiler builders who plan to use the interface.
{"title":"Design and implementation in Ada of a runtime task supervisor","authors":"Ed Falis","doi":"10.1145/3304133.3304135","DOIUrl":"https://doi.org/10.1145/3304133.3304135","url":null,"abstract":"A runtime supervisor is an Ada package in the standard environment which provides a scheduling interface between a compiled tasking program and the virtual machine upon which it is to execute. Its visible operations implement the more complex aspects of the tasking dynamic semantics. These operations are very high level in the sense that they conform closely to Ada tasking constructs. Internal to the supervisor is a small kernel of machine dependent code providing the actual interface to the target virtual machine. Given this kind of runtime environment, the compiled code of a tasking program is equivalent to the code generated by a compilation of sequential Ada constructs with embedded calls to the supervisor visible operations. All parallelism is abstracted out of the program prior to the code generation phase of the compilation, and the implementation of the parallel constructs of the Ada language is shifted into the runtime supervisor package. While the form of the sequential Ada code implementing tasking constructs will depend on design decisions made by the implementors of specific compilers as in [3] and [5], a carefully designed supervisor will be compatible with the code generated by any Ada compiler calling that supervisor's visible operations in the specified manner. The benefits of this approach, which was originally adopted for the design of the experimental Adam compiler [4], are apparent. Target machine dependent aspects of scheduling, and details of scheduling strategies are separated from compilation. The code generation phase of the Ada compiler is greatly simplified by factoring out all tasking related routines. Compiler builders need not reimplement all of tasking for each new compiler or intended target machine. In addition, experimental and special purpose supervisors will gain wider distribution and evaluation due the portability inherent in this approach. In this paper we analyze the feasibility of implementing a runtime supervisor in Ada, pointing out those areas in which the Ada language is weak for this purpose. We then derive a standard supervisor interface on the basis of a (hopefully) minimal set of facilities to be provided by any supervisor. In this derivation, we consider in detail both what must be provided if a supervisor is to implement the full tasking semantics, and also in what ways we can minimize constraints on compiler builders who plan to use the interface.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"19 9","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114106365","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Intermediate codes are in widespread use for implementing modular, portable compilers. Such intermediate codes can also provide a tool for language and compiler standardization if a formal model of the intermediate code is available. This paper describes an abstract machine model for defining the semantics of an intermediate code developed for the TeleSoft-Ada2 compiler. The model, referred to as A0, is an abstract machine whose operations are used to define the Ada intermediate code. A0 includes a logical memory organization and task representation designed for Ada, together with operations to support KAPSE functions such as rendevous, exception handling, and interrupt handling. This approach enables production quality intermediate code translators to be standardized and maintained independently from the Ada source to intermediate code compiler.
{"title":"An operational definition of intermediate code for implementing a portable Ada compiler","authors":"B. Appelbe, Gary Dismukes","doi":"10.1145/3304133.3304169","DOIUrl":"https://doi.org/10.1145/3304133.3304169","url":null,"abstract":"Intermediate codes are in widespread use for implementing modular, portable compilers. Such intermediate codes can also provide a tool for language and compiler standardization if a formal model of the intermediate code is available. This paper describes an abstract machine model for defining the semantics of an intermediate code developed for the TeleSoft-Ada2 compiler. The model, referred to as A0, is an abstract machine whose operations are used to define the Ada intermediate code. A0 includes a logical memory organization and task representation designed for Ada, together with operations to support KAPSE functions such as rendevous, exception handling, and interrupt handling. This approach enables production quality intermediate code translators to be standardized and maintained independently from the Ada source to intermediate code compiler.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125571190","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Session details: Formalism","authors":"D. Luckham","doi":"10.1145/3306119","DOIUrl":"https://doi.org/10.1145/3306119","url":null,"abstract":"","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122270162","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Session details: Tasking and runtime systems","authors":"J. Knight","doi":"10.1145/3305132","DOIUrl":"https://doi.org/10.1145/3305132","url":null,"abstract":"","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123093458","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Session details: Tools","authors":"D. Loveman","doi":"10.1145/3306121","DOIUrl":"https://doi.org/10.1145/3306121","url":null,"abstract":"","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115049231","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Session details: Intermediate languages","authors":"Benjamin M. Brosgol","doi":"10.1145/3306123","DOIUrl":"https://doi.org/10.1145/3306123","url":null,"abstract":"","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132544439","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Reasonably efficient implementations of Ada task synchronization, in particular the rendezvous, will be crucial to the successful application of Ada. There are a variety of different implementations of rendezvous semantics, each with a different cost. In addition, some implementations can only be used under constrained circumstances. In the exercise reported here we have chosen a particular application of the rendezvous that we expect to occur frequently and we have programmed several alternative implementations for this use of the rendezvous. We have measured the performance of these implementations on the multiprocessor Cm* to ascertain actual costs of the various implementations on an existing multiple processor engine. Our measurements are reported here.
{"title":"Comparative efficiency of different implementations of the Ada rendezvous","authors":"Anita K. Jones, A. Ardö","doi":"10.1145/3304133.3304163","DOIUrl":"https://doi.org/10.1145/3304133.3304163","url":null,"abstract":"Reasonably efficient implementations of Ada task synchronization, in particular the rendezvous, will be crucial to the successful application of Ada. There are a variety of different implementations of rendezvous semantics, each with a different cost. In addition, some implementations can only be used under constrained circumstances. In the exercise reported here we have chosen a particular application of the rendezvous that we expect to occur frequently and we have programmed several alternative implementations for this use of the rendezvous. We have measured the performance of these implementations on the multiprocessor Cm* to ascertain actual costs of the various implementations on an existing multiple processor engine. Our measurements are reported here.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115150898","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Bever, Manfred Dausmann, S. Drossopoulou, Walter Kirchgässner, P. Lockemann, Guido Persch, G. Winterstein
In this paper we investigate the integration of application software systems into an Ada environment using the model given in the Stoneman requirements. We consider especially the aspect of making available the user functions of such systems to an APSE end user. We outline that within the Stoneman model this can only be achieved by integrating the application software system interfaces into the MAPSE level. We suppose that an application system can be described by an abstract data type: the package facility of Ada is used to realize such an abstract data type. The problems are discussed in detail by showing how to integrate an existing data base system.
{"title":"The integration of existing database systems in an Ada environment","authors":"M. Bever, Manfred Dausmann, S. Drossopoulou, Walter Kirchgässner, P. Lockemann, Guido Persch, G. Winterstein","doi":"10.1145/3304133.3304156","DOIUrl":"https://doi.org/10.1145/3304133.3304156","url":null,"abstract":"In this paper we investigate the integration of application software systems into an Ada environment using the model given in the Stoneman requirements. We consider especially the aspect of making available the user functions of such systems to an APSE end user. We outline that within the Stoneman model this can only be achieved by integrating the application software system interfaces into the MAPSE level. We suppose that an application system can be described by an abstract data type: the package facility of Ada is used to realize such an abstract data type. The problems are discussed in detail by showing how to integrate an existing data base system.","PeriodicalId":304626,"journal":{"name":"Proceedings of the AdaTEC Conference on Ada","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1982-10-06","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125866090","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}