J VMtranslator Lab 2 - guidiamond/Z01.1-Insonia GitHub Wiki
O VMTranslator é um programa escrito em Java que faz a tradução de códigos escrito na linguagem VM definida no curso e traduz para linguagem Assembly do computador Z01.
Testando
$. /genJar.py
$ ./testeVMtraslator.py
Como o teste executa:
genJAR.py
|
|
V
VMTranslator Assembler Z01-Simulator ------------------
arquivo.vm -------------> .nasm -----------> .hack > ------------> - Verifica saída -
------------------
^
|
|- Desenvolvido no projeto J
- Traduzir o arquivo
.vm->.nasm
Para isso foi criado alguns programas (I-VM/src/vmExamples/) em VM muito específicos que testam somente um comando, ou uma parte da tradução do VMTranslator. Por exemplo o teste SimpleAdd possui somente a seguinte linha :
add
Esse teste foi criado para testar o Code.writeArithmetic no caso de um comando add. Para isso, antes da execução desse código, o simulador faz a inicialização da RAM, simulando valores na pilha e já configurando o SP para uma situação real. A memória antes da execução da instrução add é a seguinte:
0 : 0000000100000010;
256 : 0000000000000010;
257 : 0000000000000100;
258 : 0000000000000000;
I-VM/tests/tst/SimpleAdd/SimpleAdd0_in.mif
Espera-se o resultado final após a execução do comando add :
0 : 0000000100000001
256 : 0000000000000110
teste:
A seguir uma lista de como cada parte do VMTranslator é testado:
code.writePushPop
-
pop
- SimplePopTemp : pop temp ...
- SimplePopLocal : pop local ...
- SimplePopThat : pop that ...
- SimplePopThis : pop this ...
-
push
- SimplePushConst : push constant ....
- SimplePushTemp : push tempo ....
- SimplePushLocal : push local ....
- SimplePushArg : push argument ...
- SimplePushThis : push this ...
- SimplePushThat : push that ...
code.writeArithmetic
- SimpleAdd : add
- SimpleNeg : neg
- SimpleSub : sub
- SimpleEq : eq
- SimpleGt : gt
- SimpleLt : lt
- SimpleAnd : and
- SimpleOr : or