19.04.2013 Views

Apostila antiga - The Cyan Programming Language

Apostila antiga - The Cyan Programming Language

Apostila antiga - The Cyan Programming Language

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CHAPTER 4. GERAÇÃO DE CÓDIGO 39<br />

L1:<br />

codigo para S<br />

O código para<br />

if a < b<br />

then<br />

S1<br />

else<br />

S2<br />

endif<br />

será<br />

cmp a, b<br />

goto>= L1<br />

codigo para S1<br />

goto L2<br />

L1: codigo para S2<br />

L2:<br />

5. ReadStat ::= “read” “(” IdList “)”<br />

Admitiremos que existe uma função _read do sistema de tempo de execução que lê um (e apenas<br />

um) inteiro da entrada padrão e o coloca no registrador R0. Deste modo, o comando<br />

read(a, b, c);<br />

será traduzido para<br />

call _read<br />

mov a, R0<br />

call _read<br />

mov b, R0<br />

call _read<br />

mov c, R0<br />

6. SimpleExpression ::= [ Signal ] Term { LowOperator Term }<br />

Term ::= Factor { HighOperator Factor }<br />

O resultado de expressões aritméticas são colocadas em variáveis temporárias. Assim, o código<br />

a = b*c + 3<br />

será traduzido para<br />

mov t1, b<br />

mult t1, c<br />

add t1, 3<br />

mov a, t1<br />

que poderia ser otimizado para

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!