Code Generation/Exercise 8: Difference between revisions
From Wiki**3
Created page with "== The Original Code == Consider the following C function: <c> extern int printf(const char *format, ...); int printlist(int lo, int hi) { int ix = lo; while (ix < hi) { ..." |
No edit summary |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{TOCright}} | |||
Small exercises and questions. | |||
== 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: | |||
<source lang="c"> | |||
char *x = "cadeia"; | |||
char y[] = "cadeia"; | |||
char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' }; | |||
</source> | |||
== 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. | |||
[[category:Compiladores]] | |||
[[category:Ensino]] | |||
[[category: | |||
[[category: | |||
Latest revision as of 11:43, 12 February 2019
Small exercises and questions.
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:
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.