Code Generation/Exercise 8: Difference between revisions
From Wiki**3
< Code Generation
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
== 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 7: | ||
# 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. | ||
== 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: | ||
Line 16: | Line 16: | ||
</c> | </c> | ||
== 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. | ||
== 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? | ||
== 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:Compilers]] [[Category:Teaching]] |
Revision as of 16:21, 2 June 2012
static
Considere em C uma variável declarada static no corpo de uma função:
- Indique justificadamente qual a área de memória de dados a que pertence.
- Comente justificadamente se o valor desta variável pode ser modificado a partir de outra função.
- 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.
- 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: <c> char *x = "cadeia"; char y[] = "cadeia"; char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' }; </c>
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.