Unions, tipos enumerados - Programação 1 - Engenharia
Ir para navegação
Ir para pesquisar
Objetivos
- Estruturas com Unions
http://www.ead.cpdee.ufmg.br/cursos/C/c.html
Exercício: Construa uma union para representar um número complexo.
- Renomeando tipos com typedef
http://www.ead.cpdee.ufmg.br/cursos/C/c.html
- Criando variáveis com tipos enumerados.
http://www.ead.cpdee.ufmg.br/cursos/C/c.html
- Discutir o encaminhamento do trabalho
- Uso do IDE eclipse
- Refazer a questão 1 da avaliação usando ponteiros.
Observação sobre ponteiros x arrays
struct {
char alfa[15];
int code1;
int code2;
int code3;
} tabela[10],*p;
int i;
main()
{
p=tabela;
i=5;
/* PARTE 1 */
tabela[i].code1 = 1;
tabela[i].code2 = 1;
tabela[i].code3 = 1;
/* ASSEMBLY CORRESPONDENTE DA PARTE 1
movl i, %eax
leal 0(,%eax,4), %edx
leal 0(,%edx,8), %eax
subl %edx, %eax
movl $1, tabela+16(%eax)
movl i, %eax
leal 0(,%eax,4), %edx
leal 0(,%edx,8), %eax
subl %edx, %eax
movl $1, tabela+20(%eax)
movl i, %eax
leal 0(,%eax,4), %edx
leal 0(,%edx,8), %eax
subl %edx, %eax
movl $1, tabela+24(%eax)
*/
/* PARTE 2 */
p=p+5;
p->code1 = 1;
p->code2 = 1;
p->code3 = 1;
/* ASSEMBLY CORRESPONDENTE DA PARTE 2
movl p, %eax
addl $140, %eax
movl %eax, p
movl p, %eax
movl $1, 16(%eax)
movl p, %eax
movl $1, 20(%eax)
movl p, %eax
movl $1, 24(%eax)
*/
/* PARTE 3 */
p[i].code1 = 1;
p[i].code2 = 1;
p[i].code3 = 1;
/* ASSEMBLY CORRESPONDENTE DA PARTE 3
movl p, %edx
movl i, %eax
sall $2, %eax
leal 0(,%eax,8), %ecx
movl %ecx, %ebx
subl %eax, %ebx
movl %ebx, %eax
leal (%edx,%eax), %eax
movl $1, 16(%eax)
movl p, %edx
movl i, %eax
sall $2, %eax
leal 0(,%eax,8), %ecx
movl %ecx, %ebx
subl %eax, %ebx
movl %ebx, %eax
leal (%edx,%eax), %eax
movl $1, 20(%eax)
movl p, %edx
movl i, %eax
sall $2, %eax
leal 0(,%eax,8), %ecx
movl %ecx, %ebx
subl %eax, %ebx
movl %ebx, %eax
leal (%edx,%eax), %eax
movl $1, 24(%eax)
*/
}