<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://web.tecnico.ulisboa.pt/~david.matos/w/pt/index.php?action=history&amp;feed=atom&amp;title=Code_Generation%2FExercise_18</id>
	<title>Code Generation/Exercise 18 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://web.tecnico.ulisboa.pt/~david.matos/w/pt/index.php?action=history&amp;feed=atom&amp;title=Code_Generation%2FExercise_18"/>
	<link rel="alternate" type="text/html" href="https://web.tecnico.ulisboa.pt/~david.matos/w/pt/index.php?title=Code_Generation/Exercise_18&amp;action=history"/>
	<updated>2026-04-23T05:04:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://web.tecnico.ulisboa.pt/~david.matos/w/pt/index.php?title=Code_Generation/Exercise_18&amp;diff=14894&amp;oldid=prev</id>
		<title>Root: Created page with &quot;{{TOCright}} Vários fragmentos simples com variáveis globais e ciclos.  == Fragmento 1 ==  Considere o seguinte código C (assuma que ponteiros e   &#039;&#039;&#039;int&#039;&#039;&#039; ocupam 32 bits)...&quot;</title>
		<link rel="alternate" type="text/html" href="https://web.tecnico.ulisboa.pt/~david.matos/w/pt/index.php?title=Code_Generation/Exercise_18&amp;diff=14894&amp;oldid=prev"/>
		<updated>2022-06-14T18:01:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{TOCright}} Vários fragmentos simples com variáveis globais e ciclos.  == Fragmento 1 ==  Considere o seguinte código C (assuma que ponteiros e   &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; ocupam 32 bits)...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{TOCright}}&lt;br /&gt;
Vários fragmentos simples com variáveis globais e ciclos.&lt;br /&gt;
&lt;br /&gt;
== Fragmento 1 ==&lt;br /&gt;
&lt;br /&gt;
Considere o seguinte código C (assuma que ponteiros e   &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; ocupam 32 bits).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
// gerar declarações:&lt;br /&gt;
extern void print(int);&lt;br /&gt;
int ix = 0; // variável global&lt;br /&gt;
&lt;br /&gt;
// gerar fragmento de código C:&lt;br /&gt;
for (ix = 0; ix &amp;lt; 10; ix = ix + 1) print(ix);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O código Postfix correspondente ao código acima é o seguinte (agradece-se a comunicação de questões relativas a este código).&lt;br /&gt;
&lt;br /&gt;
{{CollapsedCode|Código Postfix|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
 EXTERN print&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
ALIGN&lt;br /&gt;
GLOBAL ix, OBJ&lt;br /&gt;
LABEL ix&lt;br /&gt;
SINT 0&lt;br /&gt;
&lt;br /&gt;
TEXT&lt;br /&gt;
INT 0&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL fortest&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 10&lt;br /&gt;
LT&lt;br /&gt;
JZ forend&lt;br /&gt;
&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
CALL print&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL forincr&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 1&lt;br /&gt;
ADD&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
JMP fortest&lt;br /&gt;
&lt;br /&gt;
LABEL forend&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fragmento 2 ==&lt;br /&gt;
&lt;br /&gt;
Considere o seguinte código C (assuma que ponteiros e   &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; ocupam 32 bits).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
// gerar declarações:&lt;br /&gt;
extern void print(int);&lt;br /&gt;
static int ix = 0;&lt;br /&gt;
&lt;br /&gt;
// gerar fragmento de código C:&lt;br /&gt;
ix = 0;&lt;br /&gt;
while (ix &amp;lt; 10) {&lt;br /&gt;
  print(ix = ix + 1);&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O código Postfix correspondente ao código acima é o seguinte (agradece-se a comunicação de questões relativas a este código).&lt;br /&gt;
&lt;br /&gt;
{{CollapsedCode|Código Postfix|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
EXTERN print&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
ALIGN&lt;br /&gt;
LABEL ix&lt;br /&gt;
SINT 0&lt;br /&gt;
&lt;br /&gt;
TEXT&lt;br /&gt;
INT 0&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL whiletest&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 10&lt;br /&gt;
LT&lt;br /&gt;
JZ whileend&lt;br /&gt;
&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 1&lt;br /&gt;
ADD&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
&lt;br /&gt;
CALL print&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
JMP whiletest&lt;br /&gt;
&lt;br /&gt;
LABEL whileend &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fragmento 3 ==&lt;br /&gt;
&lt;br /&gt;
Considere o seguinte código C (assuma que ponteiros e   &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; ocupam 32 bits).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
// gerar declarações:&lt;br /&gt;
extern void print(int);&lt;br /&gt;
static int ix = 0;&lt;br /&gt;
&lt;br /&gt;
// gerar fragmento de código C:&lt;br /&gt;
ix = 0;&lt;br /&gt;
for (; ix &amp;lt; 10; ) {&lt;br /&gt;
  print(ix = ix + 1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O código Postfix correspondente ao código acima é o seguinte (agradece-se a comunicação de questões relativas a este código).&lt;br /&gt;
&lt;br /&gt;
{{CollapsedCode|Código Postfix|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
 EXTERN print&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
ALIGN&lt;br /&gt;
LABEL ix&lt;br /&gt;
SINT 0&lt;br /&gt;
&lt;br /&gt;
TEXT&lt;br /&gt;
INT 0&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL fortest&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 10&lt;br /&gt;
LT&lt;br /&gt;
JZ forend&lt;br /&gt;
&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 1&lt;br /&gt;
ADD&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
&lt;br /&gt;
CALL print&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL forincr&lt;br /&gt;
&lt;br /&gt;
JMP fortest&lt;br /&gt;
&lt;br /&gt;
LABEL forend&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Fragmento 4 ==&lt;br /&gt;
&lt;br /&gt;
Considere o seguinte código C (assuma que ponteiros e   &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039; ocupam 32 bits).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
// gerar declarações:&lt;br /&gt;
extern void print(int);&lt;br /&gt;
static int ix = 0;&lt;br /&gt;
&lt;br /&gt;
// gerar fragmento de código C:&lt;br /&gt;
ix = 0;&lt;br /&gt;
do {&lt;br /&gt;
  print(ix = ix + 1);&lt;br /&gt;
} while (ix &amp;lt; 10); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O código Postfix correspondente ao código acima é o seguinte (agradece-se a comunicação de questões relativas a este código).&lt;br /&gt;
&lt;br /&gt;
{{CollapsedCode|Código Postfix|&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
EXTERN print&lt;br /&gt;
&lt;br /&gt;
DATA&lt;br /&gt;
ALIGN&lt;br /&gt;
LABEL ix&lt;br /&gt;
SINT 0&lt;br /&gt;
&lt;br /&gt;
TEXT&lt;br /&gt;
INT 0&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL whilestart&lt;br /&gt;
&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 1&lt;br /&gt;
ADD&lt;br /&gt;
DUP32&lt;br /&gt;
ADDR ix&lt;br /&gt;
STINT&lt;br /&gt;
&lt;br /&gt;
CALL print&lt;br /&gt;
TRASH 4&lt;br /&gt;
&lt;br /&gt;
LABEL whiletest&lt;br /&gt;
ADDR ix&lt;br /&gt;
LDINT&lt;br /&gt;
INT 10&lt;br /&gt;
LT&lt;br /&gt;
JNZ whilestart&lt;br /&gt;
&lt;br /&gt;
LABEL whileend&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[category:Compiladores]]&lt;br /&gt;
[[category:Ensino]]&lt;/div&gt;</summary>
		<author><name>Root</name></author>
	</entry>
</feed>