9 research outputs found
Recommended from our members
Porting a Network Cryptographic Service to the RMC2000: A Case Study in Embedded Software Development
This paper describes our experience porting a transport-layer cryptography service to an embedded microcontroller. We describe some key development issues and techniques involved in porting networked software to a connected, limited resource device such as the Rabbit RMC2000 we chose for this case study. We examine the effectiveness of a few proposed porting strategies by examining important program and run-time characteristics
A methodology for producing reliable software, volume 1
An investigation into the areas having an impact on producing reliable software including automated verification tools, software modeling, testing techniques, structured programming, and management techniques is presented. This final report contains the results of this investigation, analysis of each technique, and the definition of a methodology for producing reliable software
A portability assistant for Fortran applications
This thesis addresses the issues of porting software from one machine environment to another. Some general observations are made about the definition of Portability and the design and portability of programs written in high level programming languages, in particular Fortran. Two areas of portability are considered in detail: (i) Portability Criteria and Measures - The main criteria affecting the portability of Fortran applications are identified and possible measures of the effects of these criteria considered. A Portability Function is defined for obtaining a measure of the percentage portability of Fortran programs. (ii) Portability Assistant - The use of existing analysis tools to obtain measures of the criteria affecting the portability of Fortran programs is considered. A portability assistant is provided in the form of an Ingres Relational Database, which holds die data obtained from these measures, enables the portability function to be applied to the application and assists in the porting of the application. The methods of measuring the criteria affecting Fortran programs and the use of an Ingres database as a portability assistant is then applied to a particular example, the porting of NOMIS, a large manpower database
Production of optimised machine-code for high-level languages using machine-independent intermediate codes
The aim of this work was to investigate the problems
associated with using machine-independent intermediate
codes in the translation from a high-level language into
machine code, with emphasis on minimising code size and
providing good run-time diagnostic capabilities.
The main result was a machine-independent intermediate
code, I-code, which has been used successfully to develop
optimising and diagnostic compilers for the IMP77 language
on a large number of different computer systems. In
addition, the work has been used to lay the foundations
for a project to develop an intermediate code for portable
SIMULA compilers.
The major conclusions of the research were that
carefully designed machine-independent intermediate codes
can be used to generate viable optimising and diagnostic
compilers, and that the commonality introduced into
different code generators processing the code for
different machines simplifies the tasks of creating new
compilers and maintaining old ones
Abstract machine design for increasingly more powerful ALGOL-languages
This thesis presents the work and results of an investigation into language implementation. Some work on language design has also been undertaken. Three languages have been implemented which may be described as members of the Algol family with features and constructs typical of that family. These include block structure, nested routines, variables, and dynamic allocation of data structures such as vectors and user-defined structures. The underlying technique behind these Implementations has been that of abstract machine modelling. For each language an abstract intermediate code has been designed. Unlike other such codes we have raised the level of abstraction so that the code lies closer to the language than that of the real machine on which the language may be implemented. Each successive language is more powerful than the previous by the addition of constructs which were felt to be useful. These were routines as assignable values, dynamically initialised constant locations, types as assignable values and lists. The three languages were, Algol R a "typical" Algol based on Algol W h an Algol with routines as assignable values, enumerated types, restriction of pointers to sets of user-defined structures, and constant locations. nsl a polymorphic Algol with types as assignable values, routines as assignable values, lists, and type- and value-constant locations. The intermediate code for Algol R was based on an existing abstract machine. The code level was raised and designed so that it should be used as the input to a code generator. Such a code generator was written improving a technique called simulated evaluation. The language h was designed and a recursive descent compiler written for it which produced an intermediate code similar in level to the previous one. Again a simulated evaluation code generator was written, this time generating code for an interpreted abstract machine which implemented routines as assignable and storable values. Finally the language nsl was designed. The compiler for it produced code for an orthogonal, very high level tagged architecture abstract machine which was implemented by interpretation. This machine implemented polymorphism, assignable routine values and type- and value- constancy. Descriptions of the intermediate codes/abstract machines are given in appendices
Conception d'une architecture logicielle permettant le contrôle de machines-outils dans un contexte d'ouverture du contrôleur
L'usinage par commande numérique est un domaine où bon nombre d'innovations ont pu être constatées depuis plusieurs années. Ces innovations ont eu lieu surtout du point de vue mécanique, avec de nouvelles techniques permettant de diminuer le temps d'usinage, améliorer la durée de vie des outils et augmenter la précision et la répétivité des machines.
Cependant, tous ces changements n'ont pas nécessairement donné lieu à des innovations équivalentes dans la portion logicielle des machines. Celles-ci sont toujours contrôlées à l'aide d'une technologie logicielle vieille de plus de quarante ans. La langage de programmation accessible à l'usager, les Codes-G, n'a que très peu évolué. Quelques problèmes peuvent être identifiés. Tout d'abord, les Codes-G ne forment en rien un véritable langage de programmation. Certaines extensions ont bien été ajoutées au fil des années, mais elles restent très limitées. De plus, l'ajout de fonctions de plus en plus variées sur les machines-outils favorise la création d'architectures ouvertes où l'usager peut étendre les fonctionnalités du contrôleur et de la machine au besoin. Les Codes-G n'offrent cependant qu'un contrôle très sommaire de la machine.
Il apparaît donc que l'utilisation des machines-outils à leur plein potentiel se heurte aux limites de la couche logicielle actuellement utilisée pour accéder à leurs fonctionnalités. Une nouvelle architecture logicielle permettant la mise en oeuvre de contrôleurs à architecture ouverte, l'architecture BNCL (Basic Numerical Control Language), a donc été conçue. La base de cette architecture est une machine virtuelle réalisant l'abstraction de l'environnement d'exécution du contrôleur, et un ensemble de matériel virtuel réalisant l'abstraction des particularités physiques de la machine-outil. Grâce à ces deux axes d'abstraction, les développements logiciels effectués sur un contrôleur sont portables. De plus, la prise en charge des extensions personnalisées de la machine-outil par l'utilisateur devient possible. Ce système permet également l'utilisation de tout langage informatique jugé pertinent par l'usager pour peu qu'un compilateur existe pour cette architecture. La liberté de choix est donc totale tant du point de vue de la machine physique que des outils logiciels utilisés. Les avantages escomptés de l'utilisation d'une telle architecture ont fait l'objet d'essais qui ont permis de confirmer la pertinence de cette approche. Cette nouvelle architecture logicielle constitue une contribution importante au domaine de recherche sur le contrôle des machines-outils à commande numérique