Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos

Tamanho: px
Começar a partir da página:

Download "Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos"

Transcrição

1 Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos Nome: GABARITO (revisado) Questão 1 (20 pontos) Preencha os pontilhados do código C com variável e/ou operador lógico e/ou operador aritmético, ou combinação deles que faça sentido no código C com o correspondente código de montagem. Se tivéssemos algo como *s ou *s ou!i, isso seria preenchido num único pontilhado, pois seria uma combinação. char *gets(char *s) { int c; char *dest = s; int gotchar = 0; while ((... = getchar())... \n EOF) { *dest++ =...;... =...;... = \0 ; if ( EOF ) return NULL; return...; sabendo que foi gerado o seguinte código de montagem: gets: pushl %ebp... movl %esp, %ebp... subl $24, %esp... movl 8(%ebp), %eax... movl %eax, -20(%ebp)... movl $0, -16(%ebp)... jmp.l2....l4: movl -20(%ebp), %eax... leal 1(%eax), %edx... movl %edx, -20(%ebp)... movl -12(%ebp), %edx... movb %dl, (%eax)... movl $1, -16(%ebp)... call getchar... movl %eax, -12(%ebp)... cmpl $10, -12(%ebp)... je.l3... cmpl $-1, -12(%ebp)... 1

2 jne.l4....l3: movl -20(%ebp), %eax... leal 1(%eax), %edx... movl %edx, -20(%ebp)... movb $0, (%eax)... cmpl $-1, -12(%ebp)... jne.l5... cmpl $0, -16(%ebp)... jne.l5... movl $0, %eax... jmp.l6....l5: movl 8(%ebp), %eax....l6: leave... ret... A. (7 pontos) Preencha os pontilhados do código C com as operações lógicas e/ou aritméticas e/ou variáveis correspondentes. O preenchimento tem que estar justificado nos comentários do código de montagem. B. (9 pontos) Justifique a existência de cada linha do código de montagem, mostrando a associação dela com o código C, quando for o caso. Não descreva o que cada instrução faz, pois isso assumo que você já sabe. O que interessa e conta ponto é explicar a engenharia reversa. Sem a devida explicação o preenchimento do código C não será contabilizado. C. (2 pontos) Explique o que a instrução leave faz. Demonstre seu conhecimento, indicando o que poderia ser usado no lugar dela, mas fazendo uso apenas de movl e leal. Não pode usar popl e/ou pushl. D.(2 pontos) Explique o que a instrução ret faz. Qual a condição a ser satisfeita para que a execução de ret tenha sucesso? Demonstre seu conhecimento, indicando o que poderia ser usado no lugar dela, mas fazendo uso apenas de movl, leal, e com uso do registrador %eip (contador de programa). Não pode usar popl e/ou pushl. R: A. char *gets(char *s) { int c; char *dest = s; int gotchar = 0; while ((c = getchar())!= \n && c!= EOF) { *dest++ = c; /* incrementa depois que fez dest = c*/ gotchar = 1; *dest++ = \0 ; if (c == EOF &&!gotchar) return NULL; return s; B. gets: 2

3 pushl %ebp prepara o registro de ativaç~ao salvando a base anterior... movl %esp, %ebp aponta o topo da pilha para a base do registro de ativaç~ao... subl $24, %esp abre 6 espaços na pilha... movl 8(%ebp), %eax pega s (ponteiro para caractere)... movl %eax, -20(%ebp) salva s em %ebp-20, local do ponteiro dest (dest = s)... movl $0, -16(%ebp) zera (%ebp-16), i.e., gotchar = 0... jmp.l2 desvia incondicionalmente para.l2, corpo do while....l4: corpo do while abaixo movl -20(%ebp), %eax pega dest... leal 1(%eax), %edx calcula dest++... movl %edx, -20(%ebp) salva valor atualizado de dest... movl -12(%ebp), %edx copia (%ebp-12) = c para %edx... movb %dl, (%eax) faz *dest = c (*dest=c;dest++ ou *dest++=c em uma única linha)... movl $1, -16(%ebp) gotchar = 1... condiç~ao do while call getchar chama getchar(), sem par^ametros... movl %eax, -12(%ebp) retorno c salvo na posiç~ao %ebp-12, ou seja c = getchar()... cmpl $10, -12(%ebp) compara c com \n = je.l3 segue se c!= \n (primeira condiç~ao para permanecer no while) cmpl $-1, -12(%ebp) compara c com -1 (EOF) (segunda condiç~ao)... jne.l4 permanece no while apenas se (c!= EOF) && (c!= \n )....L3: movl -20(%ebp), %eax pega dest... leal 1(%eax), %edx dest++... movl %edx, -20(%ebp) atualiza dest... movb $0, (%eax) insere o final da lista \0 ou seja *dest++ = \0... cmpl $-1, -12(%ebp) checa se c == EOF (primeira condiç~ao do if )... jne.l5 sai do if se c!= EOF e testa segunda condiç~ao se c == EOF... cmpl $0, -16(%ebp) compara gotchar com 0 (segunda condiç~ao do if)... jne.l5 se gotchar == 0 n~ao desvia, i.e. executa if se (c==eof) &&!gotchar movl $0, %eax prepara o retorno com 0, ou seja return NULL... jmp.l6 desvia para retornar com NULL....L5: movl 8(%ebp), %eax retorna s....l6: leave prepara o retorno... ret retorna... C. Leave prepara para o retorno da rotina, apontando o topo da pilha para a base, onde está salvo a base anterior (SFP) e dando um pop para salvar este valor no registrador da base (%ebp). Então, leave é equivalente a: movl %ebp, %esp movl (%esp), %ebp leal $4(%esp), %esp # aponta topo para a base do registro # restaura base anterior # incrementa o topo para apontar para o RIP A duas últimas instruções são equivalentes a popl. Após o leave, o topo da pilha tem que estar apontando para o RIP, endereço da instrução seguinte ao call no caller. D. Ret carrega o RIP que está na pilha para o %eip e transfere o controle. Para que isso funcione, o topo da pilha tem que estar apontando para a memória onde está o RIP (return instruction pointer). Então, ret é equivalente a: movl (%esp), %eip # copia o RIP para o program counter leal $4(%esp), %esp # incrementa o ponteiro para decrementar a pilha de uma posiç~ao. 3

4 As duas instruções são equivalentes a popl %eip. Lembrar que o pop depois de copiar, ele decrementa a pilha de uma posiçao de 4 bytes, apontando para a posição imediatamente superior à posição do RIP, que seria o topo da pilha antes da execução do call. Questão 2 (20 pontos) É dado o código C, onde nas linhas pontilhadas foi suprimido o valor constante inteiro que é o mesmo nas três posições: #include <stdio.h> void xxx(unsigned int n) { if (n/...) xxx (n/...); printf("%x\n", n%...); main(){ xxx(29); foi gerado o seguinte código de montagem para a subrotina xxx, onde = 0x38e38e39:.LC0:.string "%x\n" xxx: pushl %ebx subl $24, %esp movl 32(%esp), %ebx cmpl $8, %ebx jbe.l2 movl $ , %edx movl %ebx, %eax mull %edx shrl %edx movl %edx, (%esp) call xxx movl $ , %edx movl %ebx, %eax mull %edx shrl %edx leal (%edx,%edx,8), %eax subl %eax, %ebx movl %ebx, 8(%esp) movl $.LC0, 4(%esp) movl $1, (%esp) call printf_chk addl $24, %esp popl %ebx ret xxx: 1 pushl %ebx // salva %ebx 2 subl $24, %esp // abre 6 espaços na pilha 3 movl 32(%esp), %ebx // pega n (na ordem na pilha: 6 espaços, %ebx, RIP e n) 4 cmpl $8, %ebx // compara n com 8, logo a divis~ao é por 9 5 jbe.l2 // se menor ou igual n~ao chama recursivamente, logo a divis~ao é por 9 6 movl $ , %edx // insere 0x38E38E39= (9 é arredondamento) 4

5 7 movl %ebx, %eax // pega n 8 mull %edx // multiplica 0x38E38E39 * n => %edx:%eax 9 shrl %edx // 0x38E38E39*n*2**(-33) = *n // base8= =7/64+7/(64*64)+...=7/64[1/(1-1/64)])= 7/63=1/9. 10 movl %edx, (%esp) // copia n/9 para a pilha 11 call xxx // chama rotina recursivamente, xxx(n/9) // vai preparar a impress~ao 12 movl $ , %edx // insere 0x38E38E39 13 movl %ebx, %eax // pega n (par^ametro de chamada da invocaç~ao atual) 14 mull %edx // multiplica 0x38E38E39 * n => %edx:%eax 15 shrl %edx // 0x38E38E39*n*2**(-33) = *n // base8= =7/64+7/(64*64)+...=7/64[1/(1-1/64)])= 7/63=1/9. 16 leal (%edx,%edx,8), %eax // calcula 9*n/9 (maneira mais fácil de determinar a constante suprimida) 17 subl %eax, %ebx // calcula n - 9*n/9 = n%9 (código n~ao otimizado) 18 movl %ebx, 8(%esp) // armazena na pilha 19 movl $.LC0, 4(%esp) // lista de impress~ao 20 movl $1, (%esp) // par^ametro de erro 21 call printf_chk // chamada de impress~ao 22 addl $24, %esp // devolve espaço na pilha 23 popl %ebx // restaura %ebx 24 ret a) (5 pontos) Comente e justifique cada linha do código de montagem. b) (5 pontos) Qual valor fica armazenado em %edx após a execução da linha 9? Obtenha o valor da constante a partir das operações executadas pelo GCC. Tem que relacionar os valores manipulados e a multiplicação na linha 8. Detalhe para ganhar pontos integrais no item. R: Veja os comentários no código de montagem. c) (5 pontos) Existem várias maneiras de identificar no código de montagem o valor constante suprimido do código C. Aponte pelo menos mais duas indicações, além do visto no item b. R: linhas 4 e 5; e linhas 16 e 17. d) (5 pontos) O que será impresso pelo programa acima? Seja preciso na ordem e no conteúdo de cada linha impressa. R: Cada chamada a xxx() imprime o resto da divisão do argumento por 9. Inicialmente main chama xxx(29), que chama xxx(3). xxx(3) imprime 3 numa linha e retorna. xxx(29) por sua vez imprime = 2 numa nova linha e retorna. Dessa forma, temos a representação do número na base 9. No nosso caso, 29 = 3* Se tivéssemos chamado em main xxx(124), seria impresso 1, 4 e 7 na ordem em linhas separadas pois 124 = Questão 3 (20 pontos) Suponha que seja escrito o seguinte código em C para uma função unsigned foo(float f) { union{ foat f; unsigned int u; temp; temp.f = f; return temp.u; ; 5

6 a) (5 pontos) Indique o número de bytes requeridos pela union. b) Assuma que você compilou usando as opções -m32 -O2 -S e a rotina não cria o registro de ativação. gcc gera pouquíssimas linhas no código de montagem. b1) (5 pontos) Indique como é passado o parâmetro da rotina. b2) (5 pontos) Ao entrar na rotina, que informação está no topo da pilha? b3) (5 pontos) Quais seriam estas linhas de código de montagem que o gcc gerou? R: a) 4 bytes, já que ambos os tipos possuem este tamanho. b1) O parâmetro é passado pela pilha em MEM[%esp + 4], pois não é criado registro de ativação e a rotina não usa área na pilha. b2) No topo da pilha, MEM[%esp] está o RIP, que é o endereço de retorno para execução. b3) A rotina retorna o que foi passado em %eax, pois para o assembly não importa o que o código C interpreta a representação do registrador, se float ou se unsigned int. São geradas duas linhas apenas, dado que o código foi compilado de forma otimizada e não é criado registro de ativação. Assim temos: movl 4(%esp), %eax ret # copia o valor de retorno # retorna corretamente, já que o RIP está no topo da pilha Questão 4 (20 pontos) Seja dada a seguinte declaração de uma estrutura em Linux: struct rec { char c; int *p; char a[5]; int i; int j; a) (5) Indique os offsets de cada campo em Linux e o número de bytes que serão necessários para a estrutura. R: c(0), p (4), a[0](8),a[1](9), a[2](10), a[3](11), a[4](12), i(16), j(20), sendo necessários 24 bytes. Os campos de 4 bytes ou mais são alinhados em fronteiras de 4 bytes em Linux. b) (15) Assumindo que se inicia com um ponteiro r para a estrutura em %edx, escreva exatamente 4 linhas em assembly para implementar r > p = r > a[r > i r > j]. Use apenas %edx e %eax. R: Veja que pelo enunciado o que deve ser colocado no campo p é o valor de a[r > i r > j], esperando que este valor faça sentido como ponteiro. Mas como temos um char, é preciso mover de char para int usando movzbl ou movsbl quando trouxer o valor do char para ser carregado em um registrador de 32 bits. Veja que a máquina não discute se o valor a ser carregado como endereço faz sentido ou não. Temos abaixo a solução para a questão: 1 movl 16(%edx), %eax # pega r->i 2 subl 20(%edx), %eax # r->i - r->j 3 movzbl (ou movsbl) 8(%edx, %eax), %eax # pega a[r->i - r->j] e armazena 4 bytes 4 movl %eax, 4(%edx) # armazena em r-> p Questão 5 (20 pontos) Considere o código C, onde M e N são constantes declaradas com #define: int mat1[m][n]; int mat2[n][m]; int sum_element(int i, int j){ return mat1[i][j] + mat2[j][i]; Foi gerado o código de montagem seguinte: 6

7 sum_element: 1 movl 4(%esp), %edx pega i 2 movl 8(%esp), %eax pega j 3 leal (%edx,%edx,2), %ecx calcula 3i 4 addl %eax, %ecx calcula 3i + j 5 leal (%edx,%eax,8), %edx calcula 8j + i 6 subl %eax, %edx calcula 7j + i 7 movl mat1(,%ecx,4), %eax acessa mat1[i][j], indicando que N=3 8 addl mat2(,%edx,4), %eax acessa mat2[j][i], indicando que M=7 9 ret a) (2) Qual a localização na pilha de i e j passados como argumentos para sum element? Justifique. R: i está em %esp+4 e j em %esp + 8, pois não é criado registro de ativação. b) (4) Após a execução da linha 4, qual o valor armazendo em %ecx em termos de i e j? R: %ecx = 3i +j. c) (4) Após a execução da linha 6, qual o valor armazendo em %edx em termos de i e j? R: %edx = 7j+i. d) (10) Qual o valor das constantes M e N? R: N=3, M=7. 7

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos Computadores e Programação (MAB-353 2017-1) Lista 2 - Grupo de até 3 alunos - 90 pontos Entrega impressa em sala de aula até o dia 04 de maio (mesmo limite da lista1). Grupo: GABARITO... Questão 1 (45

Leia mais

Computadores de Programação (DCC/UFRJ)

Computadores de Programação (DCC/UFRJ) Computadores de Programação (DCC/UFRJ) Aula 14: 04 de junho de 2013 1 2 ...antigamente.. No início da Computação, todos os programas eram escritos em linguagem de montagem Complexidade, propenso a erros,

Leia mais

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 1 Pilha de execução Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 2 Agenda Os desafios da execução

Leia mais

TEÓRICA. lb $t0, 1($t1)

TEÓRICA. lb $t0, 1($t1) T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta, valendo 1

Leia mais

Estrutura de uma função ( / procedimento )

Estrutura de uma função ( / procedimento ) Análise do Instruction Set Architecture (4) Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações 3. Suporte a estruturas de controlo 4. Suporte

Leia mais

Programando em Assembly

Programando em Assembly Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)

Leia mais

Assembly do IA-32 em ambiente Linux

Assembly do IA-32 em ambiente Linux Sistemas de Computação 2010/11 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC5 Alberto José Proença Objectivo A lista de exercícios propostos em TPC5 para resolução antes e durante a próxima

Leia mais

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m MCC Arquitectura de Computadores 2005/2006 Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m Nota: Apresente sempre o raciocínio ou os cálculos que efectuar;

Leia mais

Assembly do IA-32 em ambiente Linux

Assembly do IA-32 em ambiente Linux MIEI: Sistemas de Computação 2015/16 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC6 Alberto José Proença Objectivo A lista de exercícios propostos em TPC6 para resolução antes e durante a

Leia mais

Intel x AT&T - recapitulação

Intel x AT&T - recapitulação ASSEMBLY aula 2 Intel x AT&T - recapitulação mov mov int mov mov mov mov add lea sub Intel Code eax,1 ebx,0ffh 80h ebx, eax eax,[ecx] eax,[ebx&plus;3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]

Leia mais

Fluxo de Execução em Assembly

Fluxo de Execução em Assembly Fluxo de Execução em Assembly A forma natural de execução de um programa é sequencial: CPU busca instruções na memória em endereços sequenciais Instruções de desvio de assembly servem para quebrar a execução

Leia mais

Assembly IA32 Procedimentos

Assembly IA32 Procedimentos 1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e

Leia mais

Ordem de Bytes: Big Endian e Little Endian

Ordem de Bytes: Big Endian e Little Endian Ordem de Bytes: Big Endian e Little Endian Dependendo da máquina que se usa, tem de se considerar a ordem pela qual os números constituídos por múltiplos bytes estão armazenados. As ordem são duas: big

Leia mais

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas. 25-215 Volns Bernal 1 25-215 Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br Os problemas Controle do endereço de retorno da função Controle do quadro da pilha de Departamento de Sistemas Eletrônicos

Leia mais

Introdução ao Assembly

Introdução ao Assembly Introdução ao Assembly Movimentação de Dados Operações Aritméticas e Lógicas Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Representação de Programas O compilador gera o código

Leia mais

Estruturas de controlo do C if-else statement

Estruturas de controlo do C if-else statement Análise do Instruction Set Architecture (3) Alteração do fluxo de execução de instruções Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações

Leia mais

Computadores e Programação (MAB ) Lista 3 - Grupo de até 3 alunos - 80 pontos

Computadores e Programação (MAB ) Lista 3 - Grupo de até 3 alunos - 80 pontos Computadores e Programação (MAB-353 2017-1) Lista 3 - Grupo de até 3 alunos - 80 pontos Entrega impressa em sala de aula até o dia 13 de junho. Aconselhável resolver antes da prova como preparação. Grupo:...

Leia mais

Professor: Dr. Rogério Rodrigues de Vargas.

Professor: Dr. Rogério Rodrigues de Vargas. UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)

Leia mais

Linguagem de Montagem Assembly

Linguagem de Montagem Assembly Linguagem de Montagem Assembly Especificações O programa em Assembly Fica sobre a camada do Sistema Operacional Efetua chamadas ao Sistema Operacional O montador Chama-se Assembler Traduz a linguagem de

Leia mais

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento

Leia mais

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador: Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Exceções no Fluxo de Execução: Interrupções e Traps

Exceções no Fluxo de Execução: Interrupções e Traps Exceções no Fluxo de Execução: Interrupções e Traps 1 Fluxo de Controle Fluxo de controle de um programa: a 0 a 1 a 2 a n sequência de endereços I 0 I 1 I 2 I n sequência de instruções O fluxo mais simples

Leia mais

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 1. Um programa P foi compilado com um compilador

Leia mais

Sistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Sistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas. Eecução 17-29 - Volns Bernal 1 17-29 - Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br http://www.lsi.u.br/~volns Os problemas Controle do endereço de orno da função Controle do quadro da pilha

Leia mais

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO Ponteiros Definição Variável: área de memória que armazena dados de um certo tipo. Na memória, toda variável possui um endereço. Um Ponteiro é uma variável especial

Leia mais

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -

Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência

Leia mais

Programação em Assembly Optimização do código

Programação em Assembly Optimização do código Programação em Assembly Optimização do código IA32 AC1 IA32: Optimização do código 1 Optimização do desempenho A optimização decorre ao longo de 2 eixos: escolha cuidada dos algoritmos e estruturas de

Leia mais

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA T1: T2: T3: T4: T5: T6: T7: T: P: Arquitectura de Computadores I - 2002/03 TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso

Leia mais

Variáveis e Operadores em C

Variáveis e Operadores em C Variáveis e Operadores em C Luís Charneca luis.charneca@gmail.com NOMES DE VARIÁVEIS (1) As variáveis no C podem ter qualquer nome se duas condições forem satisfeitas: o nome deve começar com uma letra

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Fluxo Seqüencial de Controle e Desvios (1) Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Fluxo

Leia mais

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória.

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória. Ponteiros e Arrays Ponteiros são fundamentais para a programação bem sucedida em C: Passagem de parâmetros por referência; Alocação dinâmica de memória; Aumentar a eficiência de certar rotinas. Essencialmente,

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

Testando o Teorema de De Morgan

Testando o Teorema de De Morgan Pedro Garcia http://www.sawp.com.br 04 de Fevereiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil O Teorema Teorema de De Morgan

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 Data de entrega 16/09/2016 por e-mail (simone@ic.uff.br)

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 6: 1 2 3 A necessidade dos programadores escreverem código em linguagem de montagem tem mudado ao longo dos últimos anos: de um programador capaz de escrever

Leia mais

7. A pilha e subrotinas

7. A pilha e subrotinas Cap7.1 7. A pilha e subrotinas 7.1 Organização da Pilha (stack) Stack: estrutura de dados de uma dimensão organizada em algum trecho (segmento) da Memória; o primeiro item adicionado é o último a ser removido

Leia mais

Procedimentos Chamada de Funções e Parâmetros

Procedimentos Chamada de Funções e Parâmetros Procedimentos Chamada de Funções e Parâmetros Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Memória Durante a execução de um programa, o SO precisa alocar memória principal para:

Leia mais

SCC Capítulo 2 Recursão

SCC Capítulo 2 Recursão SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis

Leia mais

Leitura Segura de Strings

Leitura Segura de Strings Leitura Segura de Strings As funções da biblioteca padrão de C que podem ser usadas para leitura de strings não são suficientemente adequadas para esta finalidade básica. Nesta seção, serão descritos alguns

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula 25 Conjunto de Instruções: Características e Funções Rodrigo Hausen 10 de novembro de 2011 http://cuco.pro.br/ach2034 1/92 Apresentação 1. Bases Teóricas 2. Organização

Leia mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Procedimentos Chamada de Funções e Parâmetros

Procedimentos Chamada de Funções e Parâmetros Procedimentos Chamada de Funções e Parâmetros Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Memória Durante a execução de um programa, o SO precisa alocar memória principal para:

Leia mais

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Introdução à Programação Operadores, Expressões Aritméticas e Entrada/Saída de Dados Programa em C #include int main main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius

Leia mais

Linguagem de Programação C. Ponteiros

Linguagem de Programação C. Ponteiros Cristiano Lehrer Conceitos Básicos (1/3) char ch; RAM 100 101 102... 5000 5001 5002... ch ch = 'A'; RAM ch A 100 101 102... 5000 5001 5002... char *; RAM ch A 100 101 102... 5000 5001 5002... = &ch; ch

Leia mais

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Linguagem de Montagem e Linguagem de Máquina Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Conceitos básicos Linguagem/código

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Sistemas Operacionais. Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@fgp.com.br. www.fgp.com.br

Sistemas Operacionais. Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@fgp.com.br. www.fgp.com.br Sistemas Operacionais Rodrigo Rubira Branco rodrigo@kernelhacking.com rodrigo@fgp.com.br Tipos de Sistemas Operacionais De Sistemas Embarcados (PalmOS,WinCE,WinXPEmbbeded,Linux) Hardware simples, especifico

Leia mais

1) Operadores de auto incremento ++ e auto decremento --

1) Operadores de auto incremento ++ e auto decremento -- Aula 09 - Operadores de auto incremento e auto decremento, atribuição múltipla, atribuição na declaração, atribuição resumida e algumas regras de boa programação. 1) Operadores de auto incremento ++ e

Leia mais

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito

Leia mais

Ponteiros. Introdução

Ponteiros. Introdução Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na

Leia mais

Conhecendo a Linguagem de Programação C

Conhecendo a Linguagem de Programação C Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Conhecendo a Linguagem de Programação C DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Como

Leia mais

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO

LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO LISTA 02 CONJUNTO DE INSTRUÇÕES - GABARITO 1) Identifique na instrução em linguagem de máquina armazenada na memória, os elementos da instrução 2) Na figura acima, qual a quantidade de código de operações

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta: UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com

Leia mais

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto

Leia mais

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES SEL 0415 Aula 11 Microcontrolador 8051 Parte 3 SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Marcelo A. C. Vieira SEL 415 INTERRUPÇÃO Estrutura de Interrupção do 8051 n 5 Fontes [ 2 Externas

Leia mais

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná Linguagem C IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Sabemos construir algoritmos que tenham: Variáveis Comandos sequenciais Entrada e saída

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais

Sistemas de Computação

Sistemas de Computação Sistemas de Computação Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo Gambini Santos Sistemas de Computação 1/30 Assembly

Leia mais

Apontadores/ponteiros

Apontadores/ponteiros Apontadores/ponteiros 1 Apontadores/ponteiros 1. Um ponteiro pode ser manipulado como sendo um vetor. #include int v[5] = { 10, 20, 30, 40, 50 ; int p, i; p = v; for (i = 1; i < 5; i++) printf

Leia mais

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (5) x86-64: 64-bit extension to Intel 64: Intel implementation of x86-64 Estrutura do tema ISA do 1. Desenvolvimento de programas no em Linux 2. Acesso a operandos

Leia mais

INTRODUÇÃO À LINGUAGEM C

INTRODUÇÃO À LINGUAGEM C INTRODUÇÃO À LINGUAGEM C Prof. Bruno Feijó, Dept. de Informática, PUC-Rio (2018) C foi criado no início da década de 70, quando os programas mais eficientes eram escritos em linguagem Assembly, bem próxima

Leia mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio

Leia mais

Lab. de Programação Concorrente em Física Primeira Prática

Lab. de Programação Concorrente em Física Primeira Prática Lab. de Programação Concorrente em Física Primeira Prática Paulo Matias 5626309 24 de agosto de 2009 1 Introdução Nesta prática, avaliaremos a importância de se utilizar bons algoritmos e de otimizar o

Leia mais

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo Algoritmos e Estruturas de Dados I IEC012 Linguagem C - Guia de bolso - Prof. César Melo Histórico A linguagem C é uma linguagem de programação inventada na década de 1970 por Dennis Ritchie Brian Kennigaham.

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

Tópicos em C. Eliade F. Lima

Tópicos em C. Eliade F. Lima Tópicos em C Eliade F. Lima maio/2010 Criada em 1972, por Dennis Ritchie, nos laboratórios Bell, para ser usada no sistema operacional UNIX. Linguagem de propósito geral, sendo adequada à programação estruturada.

Leia mais

Guia Rápido MIPS. Tipos de Dados e Formatações

Guia Rápido MIPS. Tipos de Dados e Formatações Tipos de Dados e Formatações Guia Rápido MIPS Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1

Leia mais

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da

Leia mais

ARQUITETURA DE COMPUTADORES INTRODUÇÃO

ARQUITETURA DE COMPUTADORES INTRODUÇÃO CURSO TÉCNICO DE REDES DE COMPUTADORES Disciplina de Arquitetura de Computadores Juliana Cristina dos Santos ARQUITETURA DE COMPUTADORES INTRODUÇÃO Processamento de Dados Computador máquina capaz de coletar,

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2 Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas Aula Tópico 2 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para o compilador

Leia mais

Fundamentos de Programação 1

Fundamentos de Programação 1 Fundamentos de Programação 1 Linguagem C Arquivos Seqüências ou de Texto. Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO 1 Arquivo de Escrita 1 fopen ( nome.txt", "w" ); fputc ( caracter, arquivo); 2 #include

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Aula de Revisão: Variáveis e Atribuições Introdução Memória Principal: Vimos no curso anterior que a CPU usa a memória

Leia mais

Arquitetura de Computadores Trabalhos Práticos

Arquitetura de Computadores Trabalhos Práticos Arquitetura de Computadores Trabalhos Práticos Trabalhos Práticos 1. Bloco de memória em Verilog 2. Y86 1 instrução 5 ciclos 3. Y86 pipeline 4. Y86 dual core com cache 5. Trabalho no CUDA 3 pontos 7 pontos

Leia mais

Arquitectura de Computadores Y86 Instruções

Arquitectura de Computadores Y86 Instruções Arquitectura de Computadores Y86 Instruções Créditos Randal E. Bryant http://csapp.cs.cmu.edu António Pina e Luís Paulo Santos DI/UM Arquitectura do Jogo de Instruções Linguagem de montagem Estado do processador

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

Conjunto de Instruções MIPS Parte III

Conjunto de Instruções MIPS Parte III Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Parte III Transferência de Dados Lógicas Controle Prof. Sérgio Adaptado dos slides de Sistemas Processadores do Prof. Frank Torres

Leia mais

Introdução à Linguagem C Variáveis e Expressões

Introdução à Linguagem C Variáveis e Expressões INF1005: Programação 1 Introdução à Linguagem C Variáveis e Expressões 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Programando em C Funções Variáveis Define Operadores e Expressões Entrada e Saída

Leia mais

Introdução à linguagem C++

Introdução à linguagem C++ Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas

Leia mais

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

GEQ Prof. Paulo R. Coelho. Lista para prova

GEQ Prof. Paulo R. Coelho. Lista para prova GEQ007 2013 Prof. Paulo R. Coelho Lista para prova 7. Defina uma estrutura empregado para armazenar nome, data de nascimento, idade e salário de um empregado de uma empresa. Leia informações sobre 10 empregados

Leia mais

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)

Leia mais

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Infraestrutura de Hardware Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de

Leia mais

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos

Leia mais

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais