Linguagens de Programação
|
|
- Lara Rios
- 5 Há anos
- Visualizações:
Transcrição
1 Linguagens de Programação Prof. Miguel Elias Mitre Campista
2 Parte III GNU Compiler Collection - GCC
3 Introdução GCC (GNU C Compiler) Autor: Richard Stallman Fundador do Projeto GNU Projeto GNU, iniciado em 1984 Objetivo: criação de um sistema operacional totalmente livre baseado em UNIX Em 1984, não havia compiladores gratuitos Projeto GNU necessitou criar o seu próprio
4 Introdução Primeira versão do GCC surgiu em 1987 Primeiro compilador C ANSI portável lançado como software livre Pode ser executado em diferentes plataformas e produz saídas para vários tipos de processadores Versão revisada em 1992 Adiciona a possibilidade de compilação de C++ Com o passar dos anos... GCC foi estendido para dar suporte a outras linguagens: Fortran, ADA, Java e Objective-C O acrônimo GCC passou a ser referenciado como GNU Compiler Collection
5 Introdução GNU Fortran, por exemplo, é baseado no GCC Logo, compartilham muitas características Programa: hello.f Compilação: gfortran o h hello.f shell$>./h Hello World!
6 Compilação Processo de conversão de um programa em código fonte textual em código de máquina Código em C/C++ Sequência de 1 s e 0 s Programa em C: hello.c Compilação: gcc -Wall hello.c o h Programa em C++: hello.cpp Compilação: g++ -Wall hello.cpp o h
7 Compilação Opção: Wall (Warning all) Representa uma importante ajuda para detecção de problemas em C/C++ Deve ser sempre usada Formato das mensagens: arquivo:número_da_linha:mensagem Erro de execução!!!
8 Compilação de Múltiplos Arquivos Programas podem ser divididos em múltiplos arquivos Simplifica a edição e a compreensão gcc-ex2.c gcc-hello-ex2.h gcc-hello-ex2.c
9 Compilação de Múltiplos Arquivos Compilação dos arquivos de maneira independente Opção: -c (Compila arquivo em arquivo objeto) Por padrão, nome do arquivo objeto é o mesmo do arquivo fonte, com extensão diferente Arquivos objetos possuem referências a funções externas, mas não possuem ainda o endereço de memória correspondente que permanece indefinido
10 Compilação de Múltiplos Arquivos Criação de arquivos executáveis Arquivos objetos são ligados (linked) GCC usa o programa ligador ld Não há necessidade de usar o Wall Opção já deve ter sido usada para compilar os arquivos fonte e nada mais é alertado Processo de ligação preenche os endereços para as funções externas que estavam indefinidos
11 Compilação de Múltiplos Arquivos Recompilação de arquivos fonte Apenas o arquivo fonte alterado precisa ser recompilado e o programa deve ser religado Simplifica a recompilação em casos de programas muito grandes e com muitos arquivos Dispensa a necessidade dos usuários terem todos os arquivos fonte de um mesmo programa
12 Makefile Especifica um conjunto de regras de compilação Alvos (executáveis) e suas dependências (arquivos objeto e arquivos fonte) alvo: dependências [TAB] comando Programa make lê a descrição de um projeto no Makefile Para cada alvo, o make verifica quando as dependências foram modificadas pela última vez para determinar se o alvo precisa ser reconstruído
13 Makefile Identação da linha de comando é feita com um TAB Começa sempre com o primeiro alvo Chamado de objetivo padrão (default goal) Regras implícitas Regras definidas por padrão Exs.: Arquivos.o são obtidos de arquivos.c através da compilação Arquivos executáveis são obtidos pela ligação de arquivos.o Definidas em termos de variáveis do make Exs.: CC (compilador C) CFLAGS (opções de compilação em programas em C) Atribuição é do tipo VARIÁVEL=VALOR
14 Makefile Se fosse C++, bastaria substituir as variáveis CC para CPP e CFLAGS para CPPFLAGS, além de substituir o compilador para g++.
15 Makefile Com dependências
16 Makefile Com regras implícitas
17 Makefile Com alvo all
18 Makefile Com macros
19 Makefile Macros especiais Nome completo do alvo atual $? Lista de arquivos desatualizados para dependência atual $< Arquivo fonte da única dependência atual
20 Makefile Com macros especiais
21 Bibliotecas Externas Conjuntos de arquivos objetos pré-compilados Podem ser ligados aos programas Provêem funções ao sistema Ex.: Função sqrt da biblioteca matemática do C Encontradas em /usr/lib e /lib Ex.: Biblioteca matemática: /usr/lib/libm.a Biblioteca padrão C: /usr/lib/libc.a, contém funções como o printf e é ligada a todos os programas por padrão
22 Bibliotecas Externas Arquivo math.h Contém os protótipos das funções da biblioteca matemática em /usr/lib/libm.a No diretório padrão /usr/include/ -lnome é um atalho para /usr/lib/libnome.a
23 Bibliotecas Externas Definição das funções deve aparecer primeiro que as funções propriamente ditas Logo, as bibliotecas devem aparecer depois dos arquivos fontes ou arquivos objetos X gcc Wall lm gcc-ex3.c o gcc-ex3 gcc Wall gcc-ex3.c lm o gcc-ex3
24 Opções de Compilação Diretórios padrão de arquivos de cabeçalho /usr/local/include Ordem de busca (precedência) /usr/include Diretórios padrão de bibliotecas /usr/local/lib Ordem de busca (precedência) /usr/lib Se um arquivo de cabeçalho for encontrado em /usr/local/include, o compilador não busca mais em /usr/include. O mesmo para as bibliotecas
25 Opções de Compilação Opção I: Adiciona novo diretório para o início do caminho de busca por arquivos de cabeçalho Opção L: Adiciona novo diretório para o início do caminho de busca por bibliotecas Assumindo que o programa utilize um sistema de banco de dados (GNU Database Management - GDBM): gcc Wall I/opt/gdbm-1.8.3/include L/opt/gdbm-1.8.3/lib gcc-ex4.c -lgdbm
26 Variáveis de Ambiente Ao invés de sempre adicionar os diretórios, pode-se definir variáveis de ambiente Variáveis podem ser definidas em arquivos do shell Arquivos de cabeçalho: C_INCLUDE_PATH=/opt/gdbm-1.8.3/include export C_INCLUDE_PATH Se fosse C++... CPLUS_INCLUDE_PATH=/opt/gdbm-1.8.3/include export CPLUS_INCLUDE_PATH Bibliotecas: LIBRARY_PATH=/opt/gdbm-1.8.3/lib export LIBRARY_PATH Assim... gcc Wall gcc-ex4.c lgdbm o gcc-ex4
27 Variáveis de Ambiente Para inserir múltiplos diretórios... gcc Wall I. I/opt/gdbm-1.3.8/include I/net/include L. L/opt/gdbm-1.3.8/lib L/net/lib gcc-ex4.c lgdbm lnet o gcc-ex4 Através das variáveis de ambiente... C_INCLUDE_PATH=.:/opt/gdbm-1.3.8/include:/net/include LIBRARY_PATH=.:/opt/gdbm-1.3.8/lib:/net/lib gcc Wall gcc-ex4.c lgdbm o gcc-ex4
28 Bibliotecas Estáticas Bibliotecas estáticas (arquivos.a ) Copia da biblioteca o código de máquina das funções externas usadas pelo programa Copia no executável final durante a ligação
29 Criação de Bibliotecas Estáticas Uso da ferramenta: ar (GNU archiver) Combina uma coleção de arquivos objeto em um único arquivo de biblioteca (arquivo archive) Uma biblioteca é uma maneira conveniente de distribuir um número grande de arquivos objetos relacionados em um único arquivo ar <nome_da_biblioteca> <lista_de_arquivos_objeto>
30 Criação de Bibliotecas Estáticas Arquivo: gcc-hello-ex2.h Arquivo: gcc-bye-ex2.c Arquivo: gcc-hello-ex2.c Arquivo: gcc-ex2.c
31 Criação de Bibliotecas Estáticas Opções do ar: cr: create and replace t: table of contents
32 Bibliotecas Compartilhadas Bibliotecas compartilhadas (arquivos.so ) Arquivo executável final contém apenas uma tabela das funções que necessita, ao invés de todo código de máquina Menor arquivo executável final Antes do arquivo executável começar a rodar, o código de máquina das funções externas é copiado para a memória pelo Sistema Operacional Transferido do arquivo da biblioteca compartilhada que está em disco Processo chamado de ligação dinâmica (dynamic linking) No Windows as bibliotecas *.so são as *.dll
33 Bibliotecas Compartilhadas Bibliotecas compartilhadas (arquivos.so ) Uma vez carregadas em memória... Podem ser compartilhadas por todos os programas em execução que utilizam a mesma biblioteca O gcc busca primeiro a biblioteca compartilhada libnome.so para depois buscar a libnome.a Sempre que a biblioteca lnome é adicionada pelo gcc Variável de ambiente para bibliotecas compartilhadas são carregadas na LD_LIBRARY_PATH: LD_LIBRARY_PATH=/opt/gdbm-1.3.8/lib
34 Criação de Bibliotecas Compartilhadas (Dinâmicas) Uso da opção shared gcc shared o <biblioteca.so> <lista_arquivos_objetos> Outra alternativa: Opção Wl: lista opções ao programa ligador separadas por vírgulas gcc shared Wl,-soname,<biblioteca.so.versão> o <biblioteca.so.versão_completa> <lista_arquivos_objetos> Opções do ligador (ld): -soname: quando um executável é ligado a uma biblioteca compartilhada, o ligador dinâmico tenta ligar o executável com a biblioteca de nome passado com a opção soname e não com a biblioteca com o nome dado com o o. Isso permite a existência de bibliotecas com nomes e versões diferentes da criada.
35 Criação de Bibliotecas Compartilhadas (Dinâmicas) Dependências de bibliotecas compartilhadas: ldd (LD Dependencies) Verifica quais são e se as bibliotecas compartilhadas necessárias já foram encontradas Caso tenham sido, o caminho da biblioteca é apresentado ldd <arquivo_executável>
36 Criação de Bibliotecas Compartilhadas (Dinâmicas) Arquivo: gcc-hello-ex2.h Arquivo: gcc-bye-ex2.c Arquivo: gcc-hello-ex2.c Arquivo: gcc-ex2.c
37 Criação de Bibliotecas Compartilhadas (Dinâmicas)
38 Uso Forçado das Bibliotecas Opção static: Estáticas Força o uso das bibliotecas estáticas Pode ser vantajoso para evitar a definição de LD_LIBRARY_PATH gcc Wall static I/opt/gdbm-1.3.8/include - L/opt/gdbm-1.3.8/lib gcc-ex4.c lgdbm o gcc-ex4 Outra maneira de forçar o uso de uma determinada biblioteca é colocando o caminho completo... gcc Wall I/opt/gdbm-1.3.8/include gcc-ex4.c /opt/gdbm-1.3.8/lib/libgdbm.a o gcc-ex4
39 Comparação entre Bibliotecas Compartilhadas e Estáticas Diferenças entra o uso de bibliotecas dinâmicas e estáticas... Tamanho do executável é bem maior ao utilizar bibliotecas estáticas!
40 Warnings Opções adicionais de warnings GCC provê muitas outras opções de warning que não são incluídas na opção Wall Muitas delas produzem warnings que indicam possíveis pontos problemáticos no código fonte. Exs.: -W: Alerta sobre funções que podem retornar sem valor e comparações entre signed e unsigned -Wconversion: Alerta sobre conversão entre float e int -Wshadow: Alerta sobre redeclaração de variável em um mesmo escopo
41 Warnings
42 Pré-processador Expande macros em arquivos fonte antes deles serem compilados Opção D: Define se uma macro está sendo usada Quando uma macro é definida, o pré-processador insere o código correspondente até comando #endif Inserida na linha de comando durante a compilação Formato DNOME (NOME é o nome da macro)
43 Pré-processador Macros podem ser também definidas com o #define no arquivo fonte ou nos arquivos de cabeçalho
44 Pré-processador Macros também podem ser utilizadas passando valor Formato DVAR=VALOR
45 Pré-processador Opção: -E Exibe as declarações das funções incluídas dos arquivos de cabeçalho pelo pré-processador Comando grep filtra a saída do gcc
46 Compilação em Modo de Arquivo executável Depuração Não contém referências ao código fonte do programa original Exs.: nomes de variáveis, número de linhas etc. É simplesmente uma sequência de instruções em código de máquina criado pelo compilador Como então seria possível fazer depuração se não há como encontrar, de maneira simples, possíveis fontes de erro no código fonte?
47 Compilação em Modo de Opção: -g Opção para depuração Depuração Armazena informação adicional de depuração em arquivos executáveis e em arquivos objetos Depuradores conseguem rastrear erros baseados em informações contidas nos arquivos compilados
48 Compilação em Modo de Opção: -g Opção para depuração Depuração Informações de nomes e linhas de código são armazenadas em tabelas de símbolos contidas nos arquivos compilados Quando programa pára de maneira anormal, o compilador gera um arquivo chamado core que combinado com informações do modo de depuração auxiliam na busca da causa do erro Informações da linha que provocou o erro e do valor das variáveis
49 Compilação em Modo de Depuração Qual é o erro no código ao lado?
50 Compilação em Modo de Depuração
51 Compilação em Modo de ulimit -c Depuração Exibe o tamanho permitido para arquivos do tipo core ulimit -c unlimited Permite tamanho ilimitado para arquivos do tipo core
52 Depurador Programa gdb (GNU Debugger) gdb <arquivo_executável> <arquivo_core>
53 Comandos gdb print <variável> Imprime o valor da variável no momento da parada do programa trace Imprime as chamadas de funções e os valores das variáveis até a parada do programa Procedimento chamado de backtrace
54 Comandos gdb
55 Comandos gdb Inserção de breakpoint Execução do programa pára e retorna o controle para o depurador break <função, linha ou posição de memória> Execução do programa Programa começa a execução até encontrar o breakpoint run Para continuar a execução usar o step ou next Comando step mostra a execução de qualquer função chamada na linha (maior nível de detalhes)
56 Comandos gdb
57 Comandos gdb Valores de variáveis podem ser corrigidas set variable <variável> = <valor> finish Após isso o programa executará normalmente mesmo após utilizar o comando step Continua a execução da função até o final, exibindo o valor de retorno encontrado continue Continua a execução do programa até o final ou até o próximo breakpoint
58 Comandos gdb Programas com loop infinito podem ser também depurados Primeiro executa o programa Depois inicia o gdb para o programa em execução attach <pid>: Anexa um determinado programa em execução ao gdb Comando ps x obtém identificador do processo kill: Mata o programa em execução
59 Comandos gdb
60 Comandos gdb pid do processo
61 Otimizações O GCC é um compilador para fazer otimizações Possui opções para aumentar a velocidade e reduzir o tamanho dos executáveis gerados Processo de otimização é complexo Código em alto nível pode ser traduzido em diferentes combinações de instruções para atingir o mesmo resultado Código gerado depende do processador Ex.: há processadores que oferecem um número maior de registradores que outros
62 Otimização no Código Não requer conhecimento da arquitetura do processador Dois tipos comuns: Eliminação de expressão comum (common subexpression elimination) Inserção de funções (function inlining)
63 Eliminação de Expressão Comum Consiste em calcular uma expressão no código fonte com menos instruções Reusa resultados já calculados x = cos(v)*(1 + sen(u/2)) + sen(w)*(1 - sen(u/2)) Pode ser reescrito, da seguinte maneira... t = sen(u/2) x = cos(v)*(1 + t) + sen(w)*(1 - t)
64 Inserção de Funções Sempre que uma função é chamada... CPU armazena os argumentos da função em registradores e/ou posições de memória apropriados Há um pulo para o início da função trazendo as páginas na memória virtual para a memória física ou cache Início da execução do código da função Retorno ao ponto original de execução após o término da função Todo esse procedimento é chamado de sobrecarga de chamada de função que consome tempo de processamento!
65 Inserção de Funções Elimina a sobrecarga de chamada de função Substitui a chamada pelo próprio código da função É mais significativa caso a função chamada seja pequena Código inserido no programa possui um número menor de instruções que o necessário para realizar a chamada Exemplo de código cuja sobrecarga da chamada seria comparável ao tempo de execução necessário para realizar uma única multiplicação double sq (double x) { return x*x; }
66 Inserção de Funções Elimina a sobrecarga de chamada de função Substitui a chamada pelo próprio código da função É mais significativa caso a função chamada seja pequena Código inserido no programa possui um número menor de instruções que o necessário para realizar a chamada E se a função fosse usada dessa maneira??? for (i = 0; i < ; i++) { sum += sq (i + 0.5); }
67 Inserção de Funções Elimina a sobrecarga de chamada de função Substitui a chamada pelo próprio código da função É mais significativa caso a função chamada seja pequena Código inserido no programa possui um número menor de instruções que o necessário para realizar a chamada O procedimento de inserção (inlining) da função resulta no seguinte código otimizado: for (i = 0; i < ; i++) { double t = (i + 0.5); //Variável temporária sum += t*t; }
68 Inserção de Funções O GCC seleciona funções para serem inseridas Baseado no tamanho das funções Funções também podem ser solicitadas para serem inseridas explicitamente pelo programador Uso da palavra-chave inline Entretanto, compilador verifica se há a possibilidade
69 Compromisso entre Velocidade e Tamanho Algumas opções de otimização podem tornar o código: Mais rápido, mas... Maior em tamanho Equivalentemente Menor em tamanho, mas... Mais lento Ex.: desenrolamento de laços (loop unrolling)
70 Desenrolamento de Laços Aumenta a velocidade de execução do programa Elimina a verificação da condição de término do laço em cada iteração y[0] = 0; y[1] = 1; Otimização y[2] = 2; for (i = 0; i < 8; i++) { y[3] = 3; y[i] = i; y[4] = 4; } y[5] = 5; y[6] = 6; y[7] = 7; Processo de otimização elimina a necessidade de checagem da condição de contorno e ainda permite paralelização das sentenças de atribuição. Entretanto, aumenta o tamanho do arquivo se o número de atribuições for maior que o tamanho do laço.
71 Agendamento Nível mais baixo de otimização Compilador determina a melhor ordem das instruções individuais Ordem deve ser tal que todas as instruções possuam os dados necessários antes da execução Não aumenta o tamanho do executável Mas demora mais tempo para compilar devido a maior complexidade do procedimento
72 Níveis de Otimização Oferecidos pelo GCC para lidar com: Tempo de compilação Uso de memória Compromisso entre velocidade e tamanho do executável
73 Níveis de Otimização Escolhidos com uma opção de linha de comando Formato: -ONÍVEL (Nível pode variar de 0 até 3) -O0: GCC não realiza otimizações -O1: GCC realiza as formas mais comuns de otimizações que não requerem compromisso entre velocidade e tamanho -O2: GCC adiciona otimizações em relação ao 01 que incluem agendamento de instruções -O3: GCC adiciona otimizações em relação ao 02 que incluem inserção de funções e procedimentos que aumentam a velocidade mas aumentam o tamanho do código. Por esse motivo, normalmente o O2 se torna a melhor opção
74 Níveis de Otimização Escolhidos com uma opção de linha de comando Formato: -ONÍVEL (Nível pode variar de 0 até 3) funroll-loops: Independente das anteriores, habilita o desenrolamento de laços -Os: GCC seleciona apenas otimizações que reduzem o tamanho do executável para plataformas com restrições de recursos
75 Níveis de Otimização
76 Níveis de Otimização user: tempo de execução do processo em CPU total: tempo total para a execução do programa incluindo tempo de espera por CPU sys: tempo esperando chamadas de sistema
77 Níveis de Otimização Os diferentes níveis de otimização permitiram uma queda de tempo de execução de quase 50% (-O0: 8,977s para O3 funroll-loops: 4,700s) Em compensação, o tamanho do arquivo executável passou de 6,5k para 6,8k
78 Compilação de Programas em C++ GCC compila códigos fonte em C++ diretamente em código de máquina Outros compiladores convertem o código primeiro para C para depois compilar Procedimento é o mesmo para compilação em C Uso do comando g++ ao invés do gcc É parte do GNU Compiler Collection, assim como o gcc Inclui bibliotecas típicas de C++ Ex.: iostream ao invés de stdio.h para E/S de dados Possui mensagens de warning específicas -Wall avisa sobre métodos e funções virtuais
79 Ferramentas Relacionadas ao Compilador Medida de desempenho: gprof (GNU profiler) Grava o número de chamadas de cada função e o tempo gasto em cada uma delas Esforços para melhorar o desempenho de um programa podem ser concentrados em funções que consumam muito tempo de processamento gcc Wall pg <arquivo.c> -o <arquivo.o> Opção pg cria um arquivo com perfil gmon.out gprof <arquivo_executável>
80 Ferramentas Relacionadas ao Compilador Colunas: 1: Fração do tempo total gasto na função 2: Tempo cumulativo gasto na execução das funções calculado somando o tempo das anteriores 3: Tempo gasto na execução da função em particular 4: Número de chamadas 5: Tempo médio gasto por chamada em ns 6: Tempo gasto por chamada, contando o tempo de chamada às funções filhas em ns
81 Ferramentas Relacionadas ao Compilador Medida de desempenho: gcov (GNU coverage) Mostra o número de vezes que cada linha do programa é executada Permite encontrar áreas de código que não são usadas Combinada com o gprof permite concentrar ainda mais os esforços para melhorar o desempenho do programa gcc Wall fprofile-arcs ftest-coverage <arquivo.c> Opção ftest-coverage adiciona instruções para contar o número de vezes que cada linha é executada e o fprofile-arcs adiciona código para contar o número de vezes que a execução do programa entra em cada ramificação do código. Gera arquivos com informações usados pelo gcov. Executar e depois rodar gcov <arquivo.c> Cria o arquivo arquivo.c.gcov que contém o número de vezes que cada linha é executada.
82 Ferramentas Relacionadas ao Compilador
83 Ferramentas Relacionadas ao Compilador Todas as linhas foram usadas
84 Ferramentas Relacionadas ao Compilador Arquivo: gcc-ex8.c.cov
85 Ferramentas Relacionadas ao Compilador
86 Ferramentas Relacionadas ao Compilador Nem todas as linhas foram usadas
87 Ferramentas Relacionadas ao Compilador
88 Ferramentas Relacionadas ao Compilador Linhas não usada
89 Ferramentas Relacionadas ao Compilador Transformando para ficar mais parecido com C++...
90 Ferramentas Relacionadas ao Compilador
91 Ferramentas Relacionadas ao Compilador
92 Ferramentas Relacionadas ao Compilador Medida de desempenho: valgrind Conjunto de programas para depurar e avaliar o desempenho do programa A ferramenta mais utilizada é a Memcheck para avaliar erros comuns de memória gcc Wall g <arquivo.c> -o <arquivo.o> Programa deve ser compilado em modo de depuração valgrind --leak-check=yes <arquivo_executável> A ferramenta Memcheck é usada por padrão. A opção leakcheck liga o detector de vazamento de memória
93 Ferramentas Relacionadas ao Compilador Quais são os problemas desse programa?
94 Ferramentas Relacionadas ao Compilador Quais são os problemas desse programa?
95 Ferramentas Relacionadas ao Compilador
96 Ferramentas Relacionadas ao Compilador Erro de alocação detectado!
97 Ferramentas Relacionadas ao Compilador
98 Ferramentas Relacionadas ao Compilador Erro de vazamento detectado! O definitely lost significa que o programa está realmente vazando memória, se ele tivesse dúvida, colocaria probably lost
99 Processo de Compilação Processo com múltiplos estágios Envolve diferentes ferramentas Próprio compilador (gcc ou g++) Montador (as) Ligador (ld) O processo completo ao se invocar o compilador é: Pré-processamento compilação montagem ligação Processo completo pode ser visto com a opção v
100 Processo de Compilação Pré-processamento: cpp <arquivo.c> > <arquivo.i>
101 Processo de Compilação Compilação: gcc Wall S <arquivo.i>
102 Processo de Compilação Montagem: as <arquivo.s> -o <arquivo.o> Arquivo.o em linguagem de máquina
103 Processo de Compilação Ligação: gcc <arquivo.o> Arquivo.o Executável
104 Automake Parte de um conjunto de ferramentas chamadas Autotools Geram arquivos como: configure, configure.ac, Makefile.in, Makefile.am, aclocal.m4 etc. Ferramenta para gerar automaticamente arquivos do tipo Makefile Manutenção de Makefiles pode se tornar complexa Makefile é reescrito sempre que o programa for compilado em uma plataformas diferente... Processo ficaria mais simples se houvesse uma ferramenta que automaticamente ajustasse o Makefile!
105 Automake Processo completo de instalação, normalmente, compreende os seguintes passos: Executar: configure Verifica o sistema e gera o Makefile Executar: make Compila o código fonte do programa e mais das bibliotecas Executar: make check Roda testes para verificar os arquivos compilados Executar: make install Copia os cabeçalhos e bibliotecas para diretórios padrão Executar: make installcheck Roda testes para verificar a instalação
106 Arquivo de Configuração Verifica se o sistema possui instalações necessárias e ainda cria o arquivo Makefile Passagem de parâmetro para o configure: Sobrescreve a configuração padrão Exs.:./configure CC=gcc-3./configure CFLAGS= -O2 funroll-loops Compilação cruzada (cross compilation) Compilar um programa em uma plataforma para ser usada em outra diferente Ex.:./configure --build i686-pc-linux-gnu --host i586-mingw32msvc Opção build: Sistema onde o pacote é construído Opção host: Sistema onde o pacote será executado
107 Criando um Pacote Passo 1: Criar um diretório para armazenar os fontes Isso facilita a criação de outros diretórios para armazenar outros arquivos relacionados Ex.: /man para manual, data/ para dados etc. mkdir gcc-ex12/src Arquivo: gcc-ex12/src/main.c
108 Criando um Pacote Passo 2: Criar um arquivo do tipo README Passo 3: Criar os arquivos Makefile.am e src/makefile.am Arquivos contêm instruções para o Automake Contém lista de definições de variáveis Makefile.am src/makefile.am
109 Criando um Pacote Passo 4: Criar o arquivo configure.ac Contém instruções para o Autoconf criar o arquivo de configuração (configure)
110 Criando um Pacote Passo 4: Criar o arquivo configure.ac AC_* e AM_* são macros do Autoconf e Automake, respectivamente AC_INIT recebe o nome do pacote, versão e um endereço para reportar bugs AM_INIT_AUTOMAKE são opções do Automake AC_PROG_CC faz com que o compilador C seja buscado AC_CONFIG_HEADERS cria um arquivo config.h contendo macros AC_CONFIG_FILES recebe a lista dos arquivos que o configure deve criar AC_OUTPUT é um comando de encerramento
111 Criando um Pacote Passo 5: Executar o comando autoreconf Chama o autoconf para criar o configure e o automake para criar o Makefile depcomp: Procura as dependência necessárias para a compilação install-sh: Substitui o arquivo de instalação caso este não esteja disponível ou não possa ser usado missing: Avisa problemas durante a instalação e tenta resolver, ex. pacotes faltantes
112 Criando um Pacote Após o Passo 5, o sistema está completo Começa a instalação! Passo 6: Rodar o arquivo configure Gerado no passo 5
113 Criando um Pacote Passo 7: Rodar make. Começa a compilação! Passo 8: Programa já pode ser executado!./src/hello Passo 9: Rodar make distcheck Empacota o programa em um tar.gz
114 Criando um Pacote...
115 Doxygen Gera documentação do próprio código-fonte em diferentes linguagens Inclusive C, C++ e Python Documentação online (*.html) e offline (usando Latex) Requer configuração para extrair a documentação desejada
116 Exemplo de Programa de Captura de Pacotes A ideia é criar um programa para captura de pacotes Requer uso da biblioteca libpcap Mesma usada nos programas que fazem farejamento de redes ( packet sniffers ) Ex.: tcpdump, wireshark, etc. Instalação via apt-get: apt-get install libpcap-dev Documentação disponível em: POO para Redes de Computadores - COPPE-PEE/UFRJ
117 Programa de Captura em Execução POO para Redes de Computadores - COPPE-PEE/UFRJ
118 Função Principal POO para Redes de Computadores - COPPE-PEE/UFRJ
119 Classe PcapWrapper (*.h) POO para Redes de Computadores - COPPE-PEE/UFRJ
120 Classe PcapWrapper (*.cpp) POO para Redes de Computadores - COPPE-PEE/UFRJ
121 Classe PcapWrapper (*.cpp) POO para Redes de Computadores - COPPE-PEE/UFRJ
122 Makefile POO para Redes de Computadores - COPPE-PEE/UFRJ
123 Documentação Uso do Doxygen: Programa que facilita a documentação do código com vários níveis de detalhes Instalação via apt-get: apt-get install doxygen Documentação disponível em: Entre outros formatos, pode gerar documentos em: HTML [captura docs html] : Abrir o arquivo html/index.html PDF: [captura docs pdf]: Abrir o arquivo refman.pdf POO para Redes de Computadores - COPPE-PEE/UFRJ
124 Uso Básico do Doxygen Criação do arquivo de configuração (Doxyfile): $ doxygen g Exemplo de configuração no Doxyfile: PROJECT_NAME EXTRACT_ALL EXTRACT_PRIVATE HAVE_DOT UML_LOOK = "Capturing with libpcap = YES = YES = YES GENERATE_TREEVIEW INPUT = YES = YES = main.cpp pcapwrapper.h pcapwrapper.cpp Geração da documentação: $ doxygen Doxyfile Geração do PDF: $ cd latex; make POO para Redes de Computadores - COPPE-PEE/UFRJ
125 Documentação Gerada
126 Documentação Gerada
127 Documentação Gerada Tem isso tudo e muito mais nos documentos gerados!
128 Leitura Recomendada Brian Gough, An Introduction to GCC, 2nd edition, Network Theory Ltd, 2005 GNU `make, disponível em GNU Automake, disponível em Static, Shared Dynamic and Loadable Linux Libraries, disponível em StaticAndDynamic.html Doxygen, Disponível em
Linguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte III GNU Compiler Collection - GCC Introdução GCC (GNU C Compiler) Autor: Richard Stallman Fundador do Projeto
Linguagens de Programação. Parte III. Introdução. Introdução. Compilação. Introdução. GNU Compiler Collection - GCC. Prof. Miguel Elias Mitre Campista
Linguagens de Programação Parte III Prof. Miguel Elias Mitre Campista GNU Compiler Collection - GCC http://www.gta.ufrj.br/~miguel Introdução Introdução GCC (GNU C Compiler) Autor: Richard Stallman Fundador
Programação Orientada a Objetos para Redes de Computadores. O que é um Programa Computacional? O que é um Programa Computacional?
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 1 Conceitos Básicos de programação O que é um Programa Computacional? O
Programação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 1 Conceitos Básicos de programação O que é um Programa Computacional? O
Programação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 1 Conceitos Básicos de programação O que é um Programa Computacional? O
Arquitetura e Organização de Computadores. Compiladores e processamento
Arquitetura e Organização de Computadores Compiladores e processamento Verificar a existência dos pacotes: - GCC (Gnu C Compiler); - GDB (Gnu Debuger); - Libc (blibliotecas C); - nano, vi, emacs ou outro
16. Compilação no Linux
16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código
Introdução à Lógica de Programação
Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação Programação Tradução de um algoritmo para uma linguagem de programação Cada linguagem de programação possui sua sintaxe
PROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
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. Linguagem de programação C 3.1. Conceitos
Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados que serão usados por desenvolvedores de aplicações.
19. - Biblioteca de funções Os arquivos.c estão associados aos headers correspondentes, logo tem-se que: arquivo.h + arquivo.c = arquivo.o Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados
COMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
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
1 Como compilar seu código? 2 Comandos de terminal:
Manual Básico 2 COMANDOS DE TERMINAL: 1 Como compilar seu código? É necessário compilar seu código para testar seu programa e saber se a lógica utilizada está correta para solucionar todas as possíveis
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
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Sistemas Operacionais I 2016/1
1 Descrição Geral Atividade Experimental 2 Programa para calcular o MÁXIMO ou o MÍNIMO dos números de um arquivo O objetivo desta atividade é implementar um programa para determinar o maior ou o menor
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
Empacotamento de Software no Debian
Noções sobre (outubro de 2016) João Eriberto Mota Filho eriberto@debian.org http:///debianet.com.br AVISO As mini aulas são voltadas para quem já sabe um pouco sobre empacotamento e tratam de técnicas
Laboratório de Introdução à Ciência da Computação I
Laboratório de Introdução à Ciência da Computação I Aula 1 - Estrutura Sequencial Professores: Vanderlei Bonato (responsável) - vbonato@icmc.usp.br Luiz Henrique Kiehn (aluno PAE) - lhkiehn@icmc.usp.br
Laboratório de Introdução à Ciência da Computação I
Laboratório de Introdução à Ciência da Computação I Aula 1 - Estrutura Sequencial Professor: Jó Ueyama Estagiário PAE: Bruno S. Faiçal 1 Sumário Estrutura de programas (sequenciais) Tipos de dados simples
Linguagem C: diretivas, compilação separada. Prof. Críston Algoritmos e Programação
Linguagem C: diretivas, compilação separada Prof. Críston Algoritmos e Programação Diretivas do pré processador Permite que o programador modifique a compilação O pré processador é um programa que examina
Procedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Gprof Avaliação de desempenho. Prof: Paulo Maciel Instrutor: Jamilson Dantas
Gprof Avaliação de desempenho Prof: Paulo Maciel prmm@cin.ufpe.br Instrutor: Jamilson Dantas jrd@cin.ufpe.br Agenda Porque medir a eficiência de um Algoritmo? Como Medir O que é o Gprof? Por que usar um
Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Conceitos Básicos de Programação
BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de
Guia Rápido: GCC, Makefile e Valgrind.
Guia Rápido: GCC, Makefile e Valgrind. Alexandro Ramos 10 de setembro de 2015 1 Sumário 1 Introdução 3 2 GCC 3 2.1 Outros parâmetros úteis no GCC....................... 4 3 Makefiles 6 3.1 Makefile 1....................................
Linguagens de Programação Sistemas de Linguagens
Linguagens de Programação Sistemas de Linguagens Andrei Rimsa Álvares Sumário Introdução A sequência clássica Sobre o;mizações Variações da sequência clássica Depuradores (Debuggers) Suporte em tempo de
Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria.
Ligação e Relocação Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria http://www.inf.puc-rio.br/~inf1018 Compilação e Ligação hello.c Preprocessador hello.i programa fonte expandido (texto) Compilador hello.s
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
facilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente.
Estruturação do Programa Queremos organizar um programa de forma a: dividi-lo em partes que realizem tarefas específicas, resumindo um problema complexo a vários problemas mais simples simplifica a elaboração
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
Linguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Definição de classes e objetos
Parte IV. Linguagens de Programação. Relembrando da Última Aula... Repetição Controlada por Contador. Nono Exemplo utilizando Classes em C++
Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação (Continuação) Relembrando da Última Aula... Definição de classes e objetos Primeiros
The Cyclops Project. Introdução: C++
The Cyclops Project Introdução: C++ Aula 1 Visão Geral Histórico da Linguagem Programa C++: header, source função main() GCC Arquivos objeto, bibliotecas dinâmicas e estáticas #include, #define, namespaces,
A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão
A - Introdução O C é orientado para a produção de aplicações informáticas de grande dimensão Na geração de aplicações informáticas há ficheiros gerados a partir de outros: logo, os segundos têm obrigatoriamente
Introdução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.
O uso do computador Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. Exemplos: Modelos meteorológicos. Cálculo estrutural.
EA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)
Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora
UTILIZANDO O CODE BLOCKS
UTILIZANDO O CODE BLOCKS Prof. André Backes INTRODUÇÃO Existem diversos ambientes de desenvolvimento integrado ou IDEs (Integrated Development Environment) que podem ser utilizados para a programação em
Programação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Estruturas de dados que
Sistemas Operacionais
Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads
OpenMP. Slides baseados em tutorial de Tim Mattson da Intel
OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas
Laboratório de Introdução à Ciência da Computação I
Laboratório de Introdução à Ciência da Computação I Aula 1 - Estrutura Sequencial Professores: Vanderlei Bonato (responsável) - vbonato@icmc.usp.br Roberto de M. F. Filho (aluno PAE) - rmdff@icmc.usp.br>
USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria
USP - ICMC - SSC SSC 0501-1o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal:
Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux
Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física
Compiladores. Introdução à Compiladores
Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 2 Ambiente de Desenvolvimento
Linguagem de Programação C. Prof. Fabrício Olivetti de França
Linguagem de Programação C Prof. Fabrício Olivetti de França Linguagem C 2 Linguagem C Imperativo e estruturado Pequeno conjunto de palavras-chaves, operadores, etc. Tipagem estática, porém fraca Permite
Puca Huachi Vaz Penna
BCC201 Introdução à Computação Turmas 31, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca puca@iceb.ufop.br Aula 2 Introdução:
Métodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Implementação da programação modular II
Implementação da programação modular II - 1 Implementação da programação modular II Aula 11 Agenda Declaração e definição de dados Os conceitos relacionados com a ligação de programas Os elementos essenciais
Métodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Desenvolvimento de Aplicações Desktop
Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar
AUTOMAÇÃO E AUTOCONFIGURAÇÃO
http://blogs.msdn.com/blogfiles/willy-peter_schaub AUTOMAÇÃO E AUTOCONFIGURAÇÃO Laboratórios de Informática 2014-2015 João Paulo Barraca, André Zúquete, Diogo Gomes Automação de Tarefas GNU Make Compilação
Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make
Departamento de Engenharia Informática Sistemas Operativos 1 Utilitário Make Março 2003 1. Modelo de Compilação da Linguagem C Compilar um programa muito simples em C requer, pelo menos, o ficheiro de
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
Arquitetura e Organização de Computadores. Compiladores e processamento
Arquitetura e Organização de Computadores Compiladores e processamento Verificar a existência dos pacotes: - GCC (Gnu C Compiler); - GDB (Gnu Debuger); - Libc (blibliotecas C); - nano, vi, emacs ou outro
Introdução à Programação Aula 16. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 16 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA C É COMPILADO? 2 Compilação de um Programa A compilação
Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays
Programação Orientada a Objetos para Redes de Computadores Elias Mitre http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Arrays Estruturas de dados que contêm itens
Programação Estruturada Aula 2 - Introdução
Programação Estruturada Aula 2 - Introdução Prof. Luis Carlos Retondaro Técnico em Telecomunicações 2 o Ano CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca Campus Petrópolis 2017
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;
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
Aula 10: Funções (Parte III)
Aula 10: Funções (Parte III) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Funções Ponteiros
A linguagem C (visão histórica)
A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,
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.2. Estrutura de Programas e Representação
Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo
Fundamentos da Informática Aula 03 - Sistemas operacionais: Software em segundo plano Exercícios Professor: Danilo Giacobo Múltipla escolha 1. Em que consiste um sistema operacional: a. Um conjunto de
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias
1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo
Linguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Estrutura de Programas e Tipos de Dados Simples
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Estrutura de Programas e Tipos de Dados Simples Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br
Infraestrutura de Hardware. Desempenho
Infraestrutura de Hardware Desempenho Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface entre
Introdução a Programação de Jogos
Introdução a Programação de Jogos Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruçõ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
Linguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Capítulo 7, secções.1-.9 Capítulo 4, secções.5-.11 Linguagem C Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Ferramentas Programação. UDESC - Prof. Juliano Maia 1
Ferramentas Programação UDESC - Prof. Juliano Maia 1 Índice Seção 1 Linguagens de Programação Seção 2 Interpretador Seção 3 Compilador / Linkeditor Seção 4 Ambientes de Desenvolvimento UDESC - Prof. Juliano
Programação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
Ambiente de Desenvolvimento
Ambiente de Desenvolvimento Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright
Compiladores. Geração de Código Objeto
Compiladores Geração de Código Objeto Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Laboratório de Microprocessadores Compilação Cruzada
Laboratório de Microprocessadores Compilação Cruzada Giovani Gracioli giovani@lisha.ufsc.br Março 2010 Mar 2010 Giovani Gracioli (http://www.lisha.ufsc.br/~giovani) 1 Roteiro Visão geral sobre compilação
Aula 1 Apresentação do Curso
Departamento de Sistemas de Computação Universidade de São Paulo SSC 502 Laboratório de Introdução a Ciência de Computação I Aula 1 Apresentação do Curso Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)
Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria
USP - ICMC - SSC SSC 0501-1o. Semestre 2015 - BSI Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal:
USP - ICMC - SSC SSC o. Semestre BSI. Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria
USP - ICMC - SSC SSC 0501-1o. Semestre 2015 - BSI Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal:
Aula 3 Primeiros programas
Aula 3 Primeiros programas FACOM-UFMS 2012 OBJETIVOS DA AULA Introdução ao CodeBlocks; Criação dos primeiros programas; Esta aula foi baseada nos capítulos 3 e 4 da apostila de Programação de Computadores
Java - Sobrecarga/Composição
Java - Sobrecarga/Composição BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Métodos static Embora os métodos sejam executados em resposta a chamadas
Tutorial Ultra-rápido: desenvolvendo programas C em Unix
Tutorial Ultra-rápido: desenvolvendo programas C em Unix Jerônimo C. Pellegrini 1 Introdução Este é um breve guia para programação em C em Unix. O texto está longe de ser completo (na verdade nem tem estrutura
Compiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Laboratório 01 NetBeans
Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof. Renato Pimentel Atividade individual. Laboratório 01 NetBeans 1 Introdução Os
Programação. Module Introduction. Cap. 1 Fundamentos de Computadores
Engenharia Informática (5374) - 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) - 1º ano, 1º semestre Bioengenharia (9099) 2º ano, 1º semestre Ciências Biomédicas (10135) 2º ano, 1º semestre
Anhanguera Educacional S.A. Centro Universitário Ibero-Americano
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Linguagem de Programação
Linguagem de Programação aula 4 Engenharia Elétrica e Engenharia de Automação Introdução à Computação 1.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) Programas Programas são seqüências de instruções
Sistemas Embarcados. GNU toolchain. Introdução. Mas o compilador sozinho não adianta muito... Compilador. Aula 07
Sistemas Embarcados Ferramentas de desenvolvimento GNU toolchain Introdução Projetistas de software empregam várias ferramentas durante o ciclo de desenvolvimento de um software E.g.: editores, compiladores,
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais
Guia Doxygen. Emanuel Filipe Galdino Alves
Guia Doxygen Emanuel Filipe Galdino Alves (emanuel.alves@ee.ufcg.edu.br) O Doxygen é um programa que gera a documentação de um software a partir da análise do código escrito em C, C++, C#, Java, Python,