Difference between revisions of "Code Generation/Exercise 8"

From Wiki**3

< Code Generation
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Exercício 1.
+
{{TOCright}}
 +
Small exercises and questions.
 +
 
 +
== static ==
  
 
Considere em C uma variável declarada static no corpo de uma função:  
 
Considere em C uma variável declarada static no corpo de uma função:  
Line 7: Line 10:
 
# Indique justificamente se uma função pode devolver o endereço de uma variável declarada static sem criar dangling references.  
 
# Indique justificamente se uma função pode devolver o endereço de uma variável declarada static sem criar dangling references.  
  
Exercício 2.
+
== Memory Organization ==
  
 
Discuta as diferenças, se existirem, entre as variáveis x e y, declaradas como se segue, na linguagem C:  
 
Discuta as diferenças, se existirem, entre as variáveis x e y, declaradas como se segue, na linguagem C:  
<c>
+
<source lang="c">
 
char *x  = "cadeia";  
 
char *x  = "cadeia";  
 
char  y[] = "cadeia";  
 
char  y[] = "cadeia";  
 
char  z[] = { 'c', 'a', 'd', 'e', 'i', 'a' };  
 
char  z[] = { 'c', 'a', 'd', 'e', 'i', 'a' };  
</c>
+
</source>
  
Exercício 3.
+
== Polymorphism ==
  
 
Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos.  
 
Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos.  
  
Exercício 4.
+
== Symbols ==
  
 
Considere a tabela de símbolos fornecida na CDK. Que modificações seriam necessárias se fosse necessário permitir a definição de espaços de nomes distintos para variáveis, funções e constantes?
 
Considere a tabela de símbolos fornecida na CDK. Que modificações seriam necessárias se fosse necessário permitir a definição de espaços de nomes distintos para variáveis, funções e constantes?
  
Exercício 5.
+
== Code Generation ==
  
 
Considere uma função, denominada raizes, que recebe três argumentos correspondentes aos factores de uma equação de 2º grau (ax²+bx+c) e que calcula o número de raízes. Escreva a sequência de instruções Postfix correspondentes à implementação da função raizes.  
 
Considere uma função, denominada raizes, que recebe três argumentos correspondentes aos factores de uma equação de 2º grau (ax²+bx+c) e que calcula o número de raízes. Escreva a sequência de instruções Postfix correspondentes à implementação da função raizes.  
  
[[Category:Compilers]] [[Category:Teaching]]
+
[[category:Compiladores]]
 +
[[category:Ensino]]

Latest revision as of 13:43, 12 February 2019

Small exercises and questions.

static

Considere em C uma variável declarada static no corpo de uma função:

  1. Indique justificadamente qual a área de memória de dados a que pertence.
  2. Comente justificadamente se o valor desta variável pode ser modificado a partir de outra função.
  3. Caso a função que contém a variável static seja invocada recursivamente, quantas instâncias da variável existem e, caso existam múltiplas, os valores são iguais ou distintos? Justifique.
  4. Indique justificamente se uma função pode devolver o endereço de uma variável declarada static sem criar dangling references.

Memory Organization

Discuta as diferenças, se existirem, entre as variáveis x e y, declaradas como se segue, na linguagem C:

char *x   = "cadeia"; 
char  y[] = "cadeia"; 
char  z[] = { 'c', 'a', 'd', 'e', 'i', 'a' };

Polymorphism

Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos.

Symbols

Considere a tabela de símbolos fornecida na CDK. Que modificações seriam necessárias se fosse necessário permitir a definição de espaços de nomes distintos para variáveis, funções e constantes?

Code Generation

Considere uma função, denominada raizes, que recebe três argumentos correspondentes aos factores de uma equação de 2º grau (ax²+bx+c) e que calcula o número de raízes. Escreva a sequência de instruções Postfix correspondentes à implementação da função raizes.