Um modelo arquitectónico para desenvolvimento de compiladores: aplicação à Framework Dolphin Thesis uri icon

abstract

  • A indústria dos microprocessadores é uma área com uma dinâmica ímpar, reconhecida pelo seu avançado estado tecnológico, mas também pela sua constante evolução. Esta dinâmica deve-se em grande parte à pressão que é constantemente exercida no sentido de se obter maior poder computacional. Pressão essa que tem crescido de forma exponencial, e à qual não é alheia a forte expansão da \gloss{web} e o uso generalizado de conteúdos multimédia. %Note-se por exemplo que a compactação de vídeo em real time só se tornou viável dotando os microprocessadores de instruções específicas para esse fim. No entanto, esta evolução só é rentabilizada através da utilização de ferramentas adequadas, como é o caso dos compiladores, que por desempenharem um papel fundamental têm forçosamente de acompanhar a evolução dos microprocessadores. É, como tal, exigida uma resposta rápida por parte de quem desenvolve este tipo de ferramentas e a tecnologia que lhes está inerente. Daí que o desenvolvimento de aplicações que visem a construção de compiladores tenha um papel crucial, quer no sentido de tornar mais acessível a realização de uma tarefa que é complexa, quer no sentido de acelerar o processo de desenvolvimento de forma a acompanhar a evolução dos microprocessadores. Objectivos que aliás estão relacionados, dado que este processo será tão mais rápido, quanto mais acessível for a própria construção dos compiladores. Este trabalho de doutoramento tem assim por objectivo contribuir para simplificar o processo de construção de compiladores. Pretende-se mostrar que a melhor forma de alcançar este objectivo, passa pela utilização de uma abordagem, centrada no nível intermédio do processo de compilação, que tem por base uma framework. No sentido de suportar esta abordagem, propõe-se um modelo para a representação de código, que introduz novos conceitos e funcionalidades, que visam facilitar o desenvolvimento dos componentes e contribuir para que estes sejam mais eficientes. A grande contribuição deste trabalho de doutoramento é, no entanto, numa arquitectura que estabelece o comportamento e o relacionamento entre os elementos da representação de código e os componentes que sobre estes trabalham. Esta arquitectura, para além de garantir a eficiência do processo de compilação, simplifica a reutilização dos componentes, poupando o utilizador à implementação de vários mecanismos relacionados com a consistência e a gestão de dependências entre componentes Do trabalho realizado ao longo deste doutoramento, resultou também uma plataforma para desenvolvimento de compiladores, a framework Dolphin, cuja implementação teve por objectivo testar a viabilidade do modelo de representação de código e da arquitectura propostas nesta dissertação. The microprocessors industry is a remarkable, dynamic, and recognized area not only by its technological progress, but also by its constant evolution. This dynamic is the result of a systematic pressure to obtain more computational power, which has been raised exponentially with the expansion of the Web and with the generalization of multimedia contents. However this evolution can only be profitable with the usage of appropriated tools, like compilers. They play a fundamental role to take advantage of the whole features supplied by the microprocessors. As consequence, compilers must follow the evolution of the microprocessors, and their developers should have an adequate methodological and technological support. In this context, compiler development tools give an essential contribution, making the execution of a complex task less difficult, as well as reducing the necessary time to accomplish it. Notice that both goals are related, a simple construction process, implies a shorter development time. In this sense, the goal established for this Ph.D. project is to simplify the compilers construction process. To achieve this goal, the usage of a data centred approach based on a framework is proposed, relying upon the two main contributions of this thesis. The first one is a code representation model that introduces new concepts and features, to simplify the construction of compiler components and to make them more efficient. The second and main contribution is an architecture that establishes the behaviour and the relationship between the code representation elements and the compilers components. This architecture makes the compilation process more efficient and simplifies the reuse of the components by hiding many implementation details, namely related with components consistency and dependencies. Another important outcome of this work is a platform for compilers development, the Dolphin framework, that was implemented to test and validate the code representation model and the proposed architecture.

publication date

  • January 1, 2005