(Created page with "{{TOCright}} == Problema == Considere o seguinte código C++ (assuma que ponteiros e '''int''' ocupam 32 bits e que '''double''' ocupa 64 bits). <source lang="c++"> int fi...") |
|||
Line 123: | Line 123: | ||
== Compiling and Running == | == Compiling and Running == | ||
− | Para compilar o código Postfix directamente, pode ser utilizada a ferramenta [[Compiladores/Projecto de Compiladores/Compiladores Exemplo|pf2asm]] (assumindo uma arquitectura de 32 bits): | + | Para compilar o código Postfix directamente, pode ser utilizada a ferramenta [[Compiladores/Projecto de Compiladores/Compiladores Exemplo|pf2asm]] (assumindo uma arquitectura Intel de 32 bits -- ix86): |
pf2asm code.pf | pf2asm code.pf |
Considere o seguinte código C++ (assuma que ponteiros e int ocupam 32 bits e que double ocupa 64 bits).
int find(double *v, double f, int s, int e) {
if (s > e) return -1;
int i = (s + e) / 2;
if (v[i] == f) return i;
if (f > v[i])
return find(v, f, i + 1, e);
return find(v, f, s, i - 1);
}
O código Postfix correspondente ao código C++ é o seguinte (agradece-se a comunicação de questões relativas a este código).
[Expand] Código Postfix |
---|
Para compilar o código Postfix directamente, pode ser utilizada a ferramenta pf2asm (assumindo uma arquitectura Intel de 32 bits -- ix86):
pf2asm code.pf yasm -felf32 code.asm