[MAC323] exemplo código Emulador/Compilador
[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

[MAC323] exemplo código Emulador/Compilador



Olá

Fiquei de mandar um exemplo para aqueles que estão fazendo o Emulador ou o
Compilador, para ajudar no entendimento do mesmo. Finalmente ele vai...

Alto nível: o que o Compilador iria processar

 Exemplo 1:                         
 le(x);                             entra = true;
 le(y);                             soma = 0;
 le(z);                             while (entra) {
 w = x+y+z;                           le(x);
 imprime(w)                           soma = soma + x;
                                      if (x==0) entra=false;
                                      }
                                    imprime(soma);

Baixo nível: o que o Emulador receberia como programa

Exemplo 1:                         Exemplo 2:
 799  99 <- leitura
 798  98 <- leitura
 797  97 <- leitura
 099  AC <- c99
 298  AC <- cAC + c98
 297  AC <- cAC + c97
 196  96 <- cAC
 896  imprime c96

 // cAC: conteúdo do AC
 // cEE: cont. da gav. EE

Exercício: qual o código deste programa ?
 entra = true;
 soma = 0;
 while (entra) {
   le(x);
   soma = soma + x;
   if (x==0) entra=false;
   }                                    
 imprime(soma);

Dica: para fazer o "while (EL) C1;", veja aqui um "pseudo-assembler"

         // aqui calc. EL e resultado no AC
         // se cAC <> 0, então verdadeiro
         // se cAC == 0, então falso
         if cAC>0 vá para Rverd
         if -cAC>0 vá para Rverd
 Rfalso: // para finalizar while
         vá para Rfim
 Rverd:  // trata comandos sob while
         C1
 Rfim:   // para "receber" final de while

traduzir isto para o baixo nível é fácil

Boa diversão,

Leônidas

 --------------------------------------------------------------------------
 Leônidas de Oliveira Brandão  -  Computer Science Dep. of IME-USP (Brazil)
 leo@ime.usp.br - http://www.ime.usp.br/~leo - +55 (011) 3091 [6298 | 6135] 
 Interessado em Matemática?  Visite o "iMatica":   http://www.matematica.br