• Nenhum resultado encontrado

Compara¸c˜ao com Outras Abordagens

No documento Geração automatica de montadores em ArchC (páginas 35-39)

Aspectos relacionados diretamente a constru¸c˜oes das linguagens s˜ao dif´ıceis de serem comparados. Encontramos uma dificuldade ainda maior em rela¸c˜ao ao nosso trabalho

2.7. A Abordagem ArchC 21

porque as caracter´ısticas espec´ıficas sobre quest˜oes relacionadas `a gera¸c˜ao de montadores n˜ao s˜ao, em geral, expl´ıcitas e claras.

A descri¸c˜ao de s´ımbolos para a linguagem de montagem em ArchC ´e feita de forma muito semelhante a ISDL, a partir de uma se¸c˜ao especial de mapeamento entre nomes e valores. nML, Sim-nML e LISA n˜ao fazem essa distin¸c˜ao, e os s´ımbolos s˜ao de certa forma descritos implicitamente na descri¸c˜ao da sintaxe das instru¸c˜oes.

As outras linguagens dividem a tarefa de descri¸c˜ao da sintaxe da linguagem de mon- tagem e a codifica¸c˜ao das instru¸c˜oes em constru¸c˜oes diferentes. nML e Sim-nML utilizam as constru¸c˜oes syntax e action; j´a LISA adota a mesma filosofia, mas com as palavras- chaves SYNTAX e CODING; ISDL o faz atrav´es de uma ordem pr´e-definida de declara¸c˜oes encontradas em uma se¸c˜ao Instruction Set. Em ArchC a sintaxe e codifica¸c˜ao dos ope- randos s˜ao escritas conjuntamente atrav´es de set asm, embora a codifica¸c˜ao de campos fixos ainda seja feita atrav´es de set decoder 3

.

ArchC ainda possui uma constru¸c˜ao espec´ıfica para a cria¸c˜ao de instru¸c˜oes sint´eticas atrav´es da palavra-chave pseudo instr. Das demais linguagens, somente LISA permite a descri¸c˜ao de m´ultiplas sintaxes para uma mesma instru¸c˜ao, e tamb´em o uso de v´arios blocos OPERATION associados a uma mesma codifica¸c˜ao. No entanto n˜ao est´a claro se a linguagem consegue descrever instru¸c˜oes sint´eticas compostas, ou seja, aquelas definidas em termos de duas ou mais instru¸c˜oes nativas.

A tabela 2.1 mostra algumas caracter´ısticas encontradas nos principais montadores gerados a partir das ADL’s vistas anteriormente. Em casos onde n˜ao foi poss´ıvel se determinar claramente a presen¸ca de determinada caracter´ıstica, utilizamos o ponto de interroga¸c˜ao (’?’).

O formato para arquivo objeto do montador gerado atualmente pela nossa abordagem ´e ELF. No entanto novos formatos podem ser especificados com base na biblioteca BFD, que j´a conta com um n´umero grande de formatos dispon´ıveis. Dos demais montadores, somente o gerado pela Sim-NML tem suporte para ELF, n˜ao sendo poss´ıvel a especifica¸c˜ao de outros formatos at´e o momento. LISA utiliza um formato pr´oprio cujas propriedades s˜ao desconhecidas.

As caracter´ısticas de defini¸c˜ao de macros, gera¸c˜ao de listagens e diretivas de monta- gem j´a est˜ao dispon´ıveis no pr´oprio core do montador gas, e portanto nossos montadores podem utiliz´a-las. Nas demais abordagens, Sim-nML e LISA contam com diretivas de mon- tagem. LISA possui ainda recursos para reconhecimento de sintaxe alg´ebrica, enquanto nossa abordagem necessita de um mnemˆonico e, opcionalmente, uma lista de operandos. Essa abordagem, no entanto, pode ser alterada para vers˜oes futuras de nossa ferramenta.

3

Na verdade toda a descri¸c˜ao da codifica¸c˜ao pode ser feita exclusivamente com a constru¸c˜ao set asm. No entanto, o uso de set decoder permite a descri¸c˜ao de modelos espec´ıficos para a gera¸c˜ao de simula- dores, sem a necessidade da descri¸c˜ao das sintaxes das instru¸c˜oes imposta por set asm.

2.7. A Abordagem ArchC 22

Montadores Caracter´ıstica

nML Sim-nML ISDL LISA ArchC

Formato de arquivo objeto gerado 1

ELF BIN LOF ELF2

Diretivas de montagem X X X

Defini¸c˜ao de macros ? X

Gera¸c˜ao de listagens X ? X

Reconhecimento de sintaxe alg´ebrica X

Baseado em ferramentas redirecion´aveis X

Dispon´ıvel em dom´ınio p´ublico X3 X X3 X

1

o montador ´e interpretado

2

pode ser facilmente redirecionado para outros formatos

3

existe manual da linguagem, mas n˜ao c´odigo fonte

Tabela 2.1: Compara¸c˜ao de caracter´ısticas entre as ADL’s e montadores gerados

Somente ArchC adota uma abordagem baseada em outra ferramenta para gera¸c˜ao de seus montadores. As demais linguagens constroem todos os m´odulos do montador, geralmente utilizando as ferramentas flex e bison para a gera¸c˜ao do lexer e parser.

ArchC disponibiliza tanto o parser para a linguagem como as ferramentas geradoras ao p´ublico. Algumas linguagens como nML e ISDL, mais antigas, possuem manuais e publica¸c˜oes sobre a linguagem, mas nenhum c´odigo fonte dispon´ıvel. Toda a tecnologia de LISA atualmente pertence `a empresa Fujitsu Limited. Somente Sim-nML adota a mesma abordagem usada por ArchC para divulga¸c˜ao de seu trabalho.

Cap´ıtulo 3

Constru¸c˜oes ArchC para a Gera¸c˜ao

Autom´atica de Montadores

Neste cap´ıtulo apresentamos as novas constru¸c˜oes fornecidas por ArchC que permitem a gera¸c˜ao autom´atica de montadores. Come¸camos revendo alguns aspectos da linguagem e, a seguir, descrevemos os novos comandos utilizados para declara¸c˜ao de s´ımbolos, descri¸c˜ao da sintaxe da linguagem de montagem e da codifica¸c˜ao das instru¸c˜oes, e a cria¸c˜ao de instru¸c˜oes sint´eticas.

3.1

A Linguagem ArchC

Uma descri¸c˜ao de arquitetura em ArchC pode ser dividida basicamente em duas partes: descri¸c˜oes dos recursos (AC ARCH) e do conjunto de instru¸c˜oes (AC ISA). Uma descri¸c˜ao dos recursos fornece informa¸c˜oes sobre a estrutura da arquitetura tais como: quantidade de mem´oria endere¸c´avel, hierarquia de mem´oria, estrutura de pipeline, n´umero de regis- tradores etc. Uma descri¸c˜ao do ISA cont´em declara¸c˜oes de formatos, nomes e informa¸c˜oes usadas na decodifica¸c˜ao das instru¸c˜oes. Para cada instru¸c˜ao declarada deve-se ainda espe- cificar seu comportamento descrito em linguagem C/C++, feita em um arquivo separado. Desse modo, um modelo para uma arquitetura em ArchC ´e basicamente dividido em trˆes arquivos: o de recursos estruturais, o de declara¸c˜oes do ISA e o do comportamento das instru¸c˜oes. A figura 3.1 ilustra essa id´eia em termos de blocos de descri¸c˜ao.

As informa¸c˜oes que descrevem aspectos sobre a linguagem de montagem e codifica¸c˜ao est˜ao praticamente todas contidas na descri¸c˜ao do ISA. A ´unica exce¸c˜ao ´e a declara¸c˜ao do endianess da arquitetura, declarado junto `a descri¸c˜ao dos recursos. Portanto nos concentraremos principalmente nos aspectos envolvidos na descri¸c˜ao do ISA. As outras informa¸c˜oes s˜ao utilizadas principalmente para a gera¸c˜ao de simuladores, e podem ser encontradas com maiores detalhes em [37].

3.1. A Linguagem ArchC 24

Descrição ArchC

Descrição dos Recursos (AC_ARCH)

Descrição do ISA (AC_ISA)

Descrição do formato, tipo e decodifição das instruções

Descrição do comportamento das instruções . Registradores

. Memória

. Estrutura de Pipeline

Figura 3.1: Estrutura de uma descri¸c˜ao em ArchC

No documento Geração automatica de montadores em ArchC (páginas 35-39)

Documentos relacionados