Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
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