Spelling suggestions: "subject:"[een] COMPILERS"" "subject:"[enn] COMPILERS""
131 |
Javascript and Politics: How a Toy Language Took Over the WorldMcQueen, Sean 01 January 2013 (has links)
The most important programming languages are the ones that manage to capitalize on emerging frontiers in computing. Although JavaScript started its life as a toy language, the explosive growth of the web since 1995 and the invention of the web application have transformed the language’s syntax, potential and importance. JavaScript today is powerful and expressive. But is the language good enough to power the future of the web? How does the messy political past of JavaScript affect web development today, and how will it affect web development in the future?
The paper first examines the political history of JavaScript from its origins at Netscape through today. Then a case study of pure JavaScript web development using the NodeJS and AngularJS is presented and analyzed. Finally, several potential paths forward for the language are considered, including a discussion and analysis of Microsoft’s TypeScript, Mozilla’s ASM.js and Google’s Dart.
|
132 |
High Performance Portability with RAJA and AgencyObermiller, Dan 01 January 2017 (has links)
High performance and scientific computing take advantage of high-end and high-spec computer architectures. As these architectures evolve, and new architectures are created, applications may be able to run at greater and greater speeds. These changes persent challenges to implementors who wish to take advantage of the newest features and machines. Portability layers such as RAJA and Agency seek to abstract away machine-specific details and allow scientists to take advantage of new features as they become available. We enhance RAJA with a lower-level framework, Agency, to determine if these layered abstractions provide performance or maintainability benefits.
|
133 |
A New Look at Retargetable CompilersBurke, Patrick William 12 1900 (has links)
Consumers demand new and innovative personal computing devices every 2 years when their cellular phone service contracts are renewed. Yet, a 2 year development cycle for the concurrent development of both hardware and software is nearly impossible. As more components and features are added to the devices, maintaining this 2 year cycle with current tools will become commensurately harder. This dissertation delves into the feasibility of simplifying the development of such systems by employing heterogeneous systems on a chip in conjunction with a retargetable compiler such as the hybrid computer retargetable compiler (Hy-C). An example of a simple architecture description of sufficient detail for use with a retargetable compiler like Hy-C is provided. As a software engineer with 30 years of experience, I have witnessed numerous system failures. A plethora of software development paradigms and tools have been employed to prevent software errors, but none have been completely successful. Much discussion centers on software development in the military contracting market, as that is my background. The dissertation reviews those tools, as well as some existing retargetable compilers, in an attempt to determine how those errors occurred and how a system like Hy-C could assist in reducing future software errors. In the end, the potential for a simple retargetable solution like Hy-C is shown to be very simple, yet powerful enough to provide a very capable product in a very fast-growing market.
|
134 |
Análises estatísticas para a paralelização de linguagens de atribuição única para sistemas de memória distribuída / Static analysis for the parallelization of single assigment languages for distributed memory systemsNakashima, Raul Junji 24 September 2001 (has links)
Este trabalho descreve técnicas de análise estática de compilação baseadas na álgebra e programação linear que buscam otimizar a distribuição de loops forall e array em programas escritos na linguagem S/SAL visando à execução em máquinas paralelas de memória distribuídas. Na fase de alinhamento, nós trabalhamos com o alinhamento de hiperplanos onde objetivo é tentar encontrar as porções dos diferentes arrays que necessitam ser distribuídas juntas. Na fase de divisão, que tenta quebrar em partes independente dados e computações, nós usamos duas funções afins, a função de decomposição de dados e a função de decomposição de computação. A última fase, o mapeamento, distribui os elementos de computação nos elementos de processamento usando um conjunto de inequações. As técnicas foram implementadas num compilador SISAL, mas pode ser usada sem mudanças em outras linguagens de associação simples e com a adição de análise de dependências pode ser usada em linguagens imperativas. / This work describes static compiler analysis techniques based on linear algebra and linear programming for optimizing the distribution of forall loops and of array elements in programs written in the SISAL programming language for distributed memory parallel machines. In the alignment phase, attempt is made in the identification of portions of different arrays that need to be distributed jointly by means of alignment of hyperplanes. In the partitioning phase, effort is made in breaking as even possible the computation and pertinent data in independent parts, by means of using related functions: the data decomposition function and the computation decomposition function. The last phase is dedicated to the mapping, which comprises the distribution of the elements of computation into the existing processing elements by means of a set of inequations. These techniques are being implemented in a SISAL compiler, but can be also used without changes by means of other single assignment languages or, with the addition of dependency analysis when using other set of languages, as well.
|
135 |
Proposta de uma linguagem Java para um ambiente paralelo-JAPAR / Design of the Java-like language for a parallel environment-JAPARTraina, Antônio Fernando 10 March 2000 (has links)
Com o crescente número de usuários de computadores, novas ferramentas têm sido apresentadas com a finalidade de aumentar a eficiência dos computadores, meio para que seus usuários disponham de recursos automatizados. Mais recentemente, máquinas ligadas em rede de computadores e o fenômeno Internet tornaram necessárias ferramentas específicas para este tipo particular de uso. Entre as principais respostas a essas necessidades surgiu a linguagem Java, que tem ganhado adeptos tanto na comunidade científica como no mercado. Surge daí a necessidade de buscar formas alternativas para o uso de computadores em rede. Entre as soluções propostas encontra-se a de arquiteturas e linguagens paralelas. Estas ferramentas, ainda em fase experimental, apresentam soluções que podem a médio e longo prazo serem viáveis, desde que estudos e pesquisas mostrem sua viabilidade. Neste trabalho investiga-se a aplicação do conceito de paralelismo em linguagens para rede, mais especificamente a linguagem Java. A proposta é estudar as possíveis formas para se explorar o paradigma de linguagens paralelas em ambientes Java. Para isto, apresenta-se uma pesquisa relativa as principais linguagens paralelas disponíveis na literatura, de forma a conhecer as melhores soluções apresentadas por essas linguagens. O trabalho apresenta também um estudo realizado em um conjunto de ferramentas Java disponíveis no mercado. Finalmente, propõe-se um novo ambiente que possa disponibilizar ao usuário os melhores recursos da linguagem Java, explorando as melhores soluções encontradas na literatura. / With the increasing number of computer users, new tools have been presented to improve the computers efficiency and to make automated resources available for those users. Nowadays, the use of computers in a network and the Internet phenomenon requires specific tools. Among them, the Java language appears as an important tool, which has been attracting users in both the scientific and commercial communities. At the same time the computer networks are becoming more popular and some problems have emergent concerned to the networks assessment and connections. It is necessary to look for alternative ways of handling the network computer systems. The parallel architectures and languages appear among the proposed solutions. These tools are still in an experimental phase, studies and researches being necessary additional to confirm their feasibility. In this work we investigate the application of parallelism concepts in languages for networks, and particular we deal with the Java language. The aim is to study the possible approaches for exploring the parallel languages paradigm in Java environments. Research about the main parallel languages available in the literature is presented, in order to check the best solutions proposed by those languages. The work also presents an investigation about the Java tools available in the commercial market. Finally a new environment is proposed that makes some of the best resources of language Java available to the users by exploring the best solutions found in the literature.
|
136 |
LALP+ : um framework para o desenvolvimento de aceleradores de hardware em FPGAs / LALP+ : a framework for developing FPGA-based hardware acceleratorsOliveira, Cristiano Bacelar de 21 December 2015 (has links)
Considerando a crescente demanda por desempenho em sistemas computacionais, a implementação de algoritmos diretamente em hardware com o uso de FPGAs (Field-programmable Gate Arrays) é uma alternativa que tem apresentado bons resultados. Porém, os desafios de programação envolvidos no uso de FPGAs, de tal forma a explorar eficientemente seus recursos, limita o número de desenvolvedores em função da predominância do paradigma de programação tradicionalmente sequencial, imposto pelas linguagens imperativas. Assim, este trabalho busca desenvolver mecanismos que facilitem o desenvolvimento com FPGAs, otimizando o uso de memória e explorando o paralelismo das operações. Este documento apresenta a tese de doutorado de título LALP+ : um framework para o desenvolvimento de aceleradores de hardware em FPGAs. Dado que a latência para leitura e escrita de dados têm sido um gargalo para algumas aplicações de alto desempenho, este trabalho trata do desenvolvimento de técnicas para geração de arquiteturas de hardware, considerando aspectos relativos ao mapeamento, gerenciamento e acesso à memória em arquiteturas reconfiguráveis. Para isto, o projeto desenvolvido utiliza como base a linguagem LALP, cujo foco é o tratamento de loops com a técnica de loop pipelining. As técnicas descritas nesta tese são empregadas no desenvolvimento do framework LALP+, o qual estende LALP com a implementação de novas características e funcionalidades, de forma a contribuir para o aumento do seu nível de abstração. As arquiteturas criadas utilizando LALP+ foram comparadas às geradas por ferramentas comerciais e acadêmicas, tendo apresentado, em média, um melhor desempenho, com redução do tempo de execução de 10;01, no melhor caso. Espera-se, por meio das contribuições aqui apresentadas, facilitar a implementação de produtos e projetos relacionados a aplicações de computação de alto desempenho que envolvam o uso de arquiteturas reconfiguráveis, promovendo uma maior absorção desta tecnologia. / Considering the demand for high-performance in computer systems, the implementation of algorithms directly in hardware by using FPGAs (Field-programmable Gate Arrays) is an alternative that has shown good results. However, the number of developers is limited due to the challenges faced for efficiently programming FPGAs. In addition to that, developers are more used to the traditional sequential programming paradigm imposed by the imperative languages. This work seeks to develop mechanisms to facilitate the development with FPGAs, by optimizing memory usage and exploiting the parallelism of operations inside a loop. This document presents the doctoral thesis entitled LALP+ : a framework for developing FPGA-based hardware accelerators. Since the latency for reading and writing data have been a bottleneck for high performance applications, this work deals with the development of techniques for generation of hardware architectures, considering aspects related to mapping, management and memory access in reconfigurable architectures, using as basis the LALP language, which focuses on the treatment of loops with the technique of loop pipelining. The techniques described in this thesis are employed in the development of the LALP+ framework, which extends LALP by implementing new features and functionalities, in order to contribute to increase its abstraction level. LALP+ architectures were compared to ones generated by using academical and commercial tools, having presented, on average, better performance, with a execution time speedup of 10;01 for the best case. Thus, it is expected that the hereby presented contributions facilitate the implementation of products and projects related to high-performance computing applications with reconfigurable architectures, contributing for the use of such technology.
|
137 |
[en] INTEGRATING THE LUA LANGUAGE AND THE COMMON LANGUAGE RUNTIME / [pt] INTEGRAÇÃO ENTRE A LINGUAGEM LUA E O COMMON LANGUAGE RUNTIMEFABIO MASCARENHAS DE QUEIROZ 27 May 2004 (has links)
[pt] O Common Language Runtime (CLR) é uma plataforma criada
com o objetivo de facilitar a interoperabilidade entre
diferentes linguagens de programação, através de uma
linguagem intermediária (a Common Intermediate Language,
ou CIL) e um sistema de tipos comum (o Common Type System,
ou CTS). Lua é uma linguagem de script flexível e de
sintaxe simples; linguagens de script são frequentemente
usadas para juntar componentes escritos em outras
linguagens, para construir protótipos de aplicações, e em
arquivos de configuração. Este trabalho apresenta duas
abordagens de integração entre a linguagem Lua e o CLR,
com o objetivo de permitir que scripts Lua instanciem e
usem componentes escritos para o CLR. A primeira
abordagem é a de criar uma ponte entre o interpretador
Lua e o CLR, sem modificar o interpretador. Os recursos e
a implementação desta ponte são mostrados, e ela é
comparada com trabalhos que seguem a mesma abordagem. A
segunda abordagem é a de compilar as instruções da
máquina virtual do interpretador Lua para instruções da
Common Intermediate Language Do CLR, sem introduzir
mudanças na linguagem Lua. A implementação de
um compilador de instruções Lua para CIL é mostrada, e o
desempenho de scripts compilados por ele é comparado com
o desempenho dos mesmos scripts executados pelo
interpretador Lua e com o de scripts equivalentes
compilados por outros compiladores de linguagens de
script para o CLR. / [en] The Common Language Runtime (CLR) is a platform that aims
to make the interoperability among different programming
languages easier, by using a common language (the Common
Intermediate Language, or CIL) and a common type system
(the Common Type System, or CTS). Lua is a flexible
scripting language with a simple syntax; scripting
languages are frequently used to join components written in
other languages, to build application prototypes, and in
configuration files. This work presents two approachs for
integratiion between the Lua language and the CLR, with the
objective of allowing Lua scripts to instantiate and
use components written for the CLR. The first approach is
to create a bridge between the Lua interpreter and the CLR,
without changing the interpreter. The features and
implementation of this bridge are shown, and it is compared
with other work following the same approach. The second
approach is to compile the virtual-machine instructions of
the Lua interpreter to instructions of the CLR s Common
Intermediate Language, without introducing changes to the
Lua language. The implementation of a Lua instructions to
CIL compiler is shown, and the performance of scripts
compiled by it is compared with the performance of the same
scripts run by the Lua interpreter and with the performance
of equivalent scripts compiled by compilers of other
scripting language to the CLR.
|
138 |
An integrated VLSI design environment based on behavioral description.January 1989 (has links)
by Teresa W.M. Ng. / Thesis (M.Phil.)--Chinese University of Hong Kong, 1989. / Bibliography: leaves 97-100.
|
139 |
Gramática transformacional com atributos / Attributed transformational grammarZorzo, Avelino Francisco January 1994 (has links)
A transformação entre linguagens, ou entre diferentes formatos de uma mesma linguagem, é um assunto que desperta interesse há vários anos e desta forma alguns trabalhos tem surgido para tentar automatizar o processo de transformação entre notações diferentes. Este trabalho descreve as Gramáticas Transformacionais empregados para descrever as transformag6es necessárias para converter uma notação em uma linguagem fonte (LF) para uma notação equivalente em uma linguagem objeto (LO). Nesta Gramática é embutido o conceito de Gramáticas de Atributos, criando assim as Gramáticas Transformacionais com Atributos (GTAs). Para validação das GTAs é apresentado um protótipo de ferramenta transformacional, que gera um tradutor, de LF para LO, a partir da descrição da gramática da LF e das regras de transformações para a LO. Tanto a LF quanto a LO são gramáticas do tipo LALR(1). Como objetivo de construir a ferramenta mais genérica possível, foram realizados estudos sobre três ferramentas, com as quais as transformações são possíveis. São elas: YACC, SINLEX e GG. É feita uma breve descrição destas três ferramentas e uma comparação com o protótipo implementado. / Languages transformation or transformation among differents formats of the same language is a subject that , has had a lot of interest for t many years. Thus, research has been done aiming to automatize the proccess of transformation from one notation to another. This work describes the use of Transformation Grammars to describe the necessary transformations to convert from a Source Language (SL) notation to an equivalent Object Language (OL). The concept of Attribute Grammars is embbeded to these grammars, defining an Attributed Transformation Grammar (ATG). A transformation tool prototype to evaluate the ATGs is presented. This tool generates a translator from SL to OL using the SL grammar description and the corresponding transformation rules to the OL. Both the SL and OL are LALR(1) grammars. Studies on YACC, SINLEX and GG (tools wich allow transformations) were done trying to reach the most generic tool. A brief descriptions of these tools and a comparision with the prototype is presented.
|
140 |
A Compiler Target Model for Line Associative RegistersEberhart, Paul S. 01 January 2019 (has links)
LARs (Line Associative Registers) are very wide tagged registers, used for both register-wide SWAR (SIMD Within a Register )operations and scalar operations on arbitrary fields. LARs include a large data field, type tags, source addresses, and a dirty bit, which allow them to not only replace both caches and registers in the conventional memory hierarchy, but improve on both their functions. This thesis details a LAR-based architecture, and describes the design of a compiler which can generate code for a LAR-based design. In particular, type conversion, alignment, and register allocation are discussed in detail.
|
Page generated in 0.0295 seconds