Esse projeto tem como objetivo realizar tanto a codificação (transformar instrução assembly MIPS para hexadecimal) quanto a decodificação (transformar intstrução em hexadecimal para assembly MIPS válido).
Nesse escopo, por enquanto suportamos as instruções:
or, and, sub, sltiu, lw, sw, beq e j.
O programa é inteiramente desenvolvido em C e utiliza apenas as libs nativas da linguagem. Para executar o projeto (já compilado), basta executar o seguinte comando a partir do diretório raíz do projeto:
./converter <encode/decode>
O comando acima executará a codificação ou decodificação dos arquivos.
O arquivo de input para ./converter encode é entrada.asm. Deixei um código de exemplo na entrada. Sua saída é no arquivo saida.txt, contendo
as instruções codificadas para hexadecimal.
Para testar outras entradas, basta modificar o conteúdo o arquivo entrada.asm com assembly válido e suportado pelo projeto.
Já para testar ./converter decode, o arquivo de entrada é entrada.txt, contendo uma lista de códigos em hexadecimal. A saída do programa se encontra
no arquivo saida.asm, contendo um programa válido assembly.
Caso alguma alteração tenha sido feita, é necessário recompilar o programa. Se você tiver make instalado em sua máquina, basta rodar:
make para recompilar o programa e depois rodar ./converter <encode/decode> novamente.
Caso não tenha make, basta compilar com o gcc: gcc -o converter io.c decoder.c main.c encoder.c helpers.c e novamente rodar ./converter <encode/>