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.
- 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) eCONST
.
- 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 eSPACE
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.
É 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.
Para compilar esse projeto, você vai precisar ter os seguintes programas instalados em seu computador:
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.
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
Dê uma olhada aqui para conhecimentos aleatórios e curiosidades sobre esse projeto.