Skip to content

yudi-azvd/hassembler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hassembler

Hassembler é um montador e ligador para o Assembly hipotético estudado durante a disciplina de Software Básico da Universidade de Brasília. Como se trata de um montador para Assembly hipotético, nada mais justo que considerar o montador também como hipotético: Hypothetical Assembler Hassembler.

O que o Hassembler consegue fazer atualmente:

  • Montar códigos de Assembly hipotético traduzindo-os para arquivos objeto.
  • Mostrar os erros de montagem indicando a respectiva linha (mas não o arquivo, he he. Vai ser consertado).
  • Suporte às diretivas SPACE (não funciona para vetores) e CONST.

O que o Hassembler vai conseguir fazer em um futuro próximo:

  • Montar e ligar, gerando o "executável" para o simulador.
  • Mostrar erros de ligação, indicando linha e arquivo.
  • Suporte às diretivas EQU para substituir valores e SPACE para alocar vetores.
  • Strings?
  • E mais outras coisas se eu tiver paciência.

Se você estiver muito impaciente para montar e ligar o seus códigos em Assembly Hipostético, você pode usar o programa em uma versão anterior.

Fique atento

É garantido que o Hassembler funciona (eu espero pelo menos isso) apenas em Linux ou WSL. Usuários de Windows vão ter que esperar um pouco. Ainda assim, são incentivados a experimentar com esse projeto e abrir issues.

Dependências

Para compilar esse projeto, você vai precisar ter os seguintes programas instalados em seu computador:

Como usar

Baixe esse repositório e entre nele:

git clone https://github.com/yudi-azvd/hassembler.git
cd hassembler

Crie a pasta de build, entre nela, gere os arquivos de build e compile:

mkdir build
cd build
cmake ..
make hasm

Se tudo deu certo, o programa foi compilado e o executável resultante é o hasm. Ainda no diretório ./build, é possível montar um arquivo de exemplo em assembly hipotético com:

./hasm ../asm_files/fatorial.asm

O resultado deve ser um arquivo objeto fatorial.obj no mesmo diretório. O hasm usa o nome do arquivo de entrada para gerar o nome do arquivo de saída substituindo a extensão por .obj. Atualmente, os arquivos objetos sempre são criados no mesmo diretório onde o programa foi executado.

Você ainda pode copiar esse executável para qualquer lugar do seu computaddor e usá-lo normalmente atentando-se somente aos caminhos dos arquivos usados como argumentos para hasm.

Cheque a documentação para mais informações sobre o uso e o funcionamento do Hassembler.

Testes

Dentro de ./build, para compilar e executar os testes:

make utests
./utests

Os testes estão nos diretórios _tests, seguindo uma organização inspirada no conceito DDD. Os tipos dos testes são indicados com uma sub extensão:

  • Testes unitários: .ut

Aleatórios e Curiosidades

Dê uma olhada aqui para conhecimentos aleatórios e curiosidades sobre esse projeto.

About

Montador e ligador para um Assembly hipotético.

Resources

Stars

Watchers

Forks