Linguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca
|
|
- Ayrton Branco Barateiro
- 6 Há anos
- Visualizações:
Transcrição
1 Capítulo 7, secções Linguagem C Produção de programas em C (Ligação dinâmica) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)
2 Ligação estática Código fonte: app.c dyn_alloc.h dyn_dbg.h Tradutores (cpp, cc, as) liballoc.a libc.a Bibliotecas estáticas: Ficheiros objectos realocáveis: app.o dyn_alloc.o printf.o Linker (ld) > gcc static o app app.o./liballoc.a Desvantagens: O ficheiro executável contém as secções.text de todos os ficheiros objecto realocáveis de que dependa Cada processo tem mapeado em memória uma réplica do código dos módulos ligados estaticamente Com a opção -static os módulos usados da biblioteca standard também são ligados estaticamente. Ex: printf.o Ficheiro objecto executável: app Loader (execve)
3 Ligação dinâmica Código fonte: app.c dyn_alloc.h dyn_dbg.h Tradutores (cpp, cc, as) libc.so liballoc.so Bibliotecas partilhadas: Ficheiros objectos realocáveis: app.o Linker (ld) Informação de realocação e tabela de símbolos > gcc o app app.o. /liballoc.so Ficheiro objecto executável parcialmente ligado: app Loader (execve) libc.so liballoc.so Código e dados Dynamic linker (ld-linux.so) O Loader verifica a existência da secção.interp em app Acções do linker dinâmico: Carrega em memória código e dados das bibliotecas partilhadas Resolve símbolos globais indefinidos (RTLD_NOW) Executável em memória totalmente ligado
4 Geração da biblioteca partilhada Comando para criar biblioteca partilhada: > gcc shared o liballoc.so dyn_alloc.o dyn_dbg.o Opção shared: gera biblioteca partilhada Na biblioteca os endereços finais das secções estão por definir > gcc shared fpic o liballoc.so dyn_alloc.o dyn_dbg.o Opção fpic: por indicação do manual gcc (ver descrição da opção shared) Produce a shared object which can then be linked with other objects to form an executable. Not all systems support this option. For predictable results, you must also specify the same set of options that were used to generate code (-fpic, -fpic, or model suboptions) when you specify this option.
5 Código partilhado por vários processos Resolvidas as réplicas de código nos ficheiros executáveis O código das bibliotecas partilhadas, depois de carregado em memória, não é mais alterado O código das bibliotecas partilhadas pode ser partilhado por vários processos Dificuldades: Como são resolvidos os símbolos globais indefinidos (endereços de variáveis e funções externas) no código das bibliotecas partilhadas? (os endereços podem ter valores diferentes para vários processos que usem a mesma biblioteca partilhada) Como são resolvidos os símbolos globais de variáveis definidas nos ficheiros objecto realocáveis das bibliotecas partilhadas? (os endereços das variáveis podem ter valores diferentes quando a mesma biblioteca é partilhada por diferentes processos) Como são resolvidas as referências das chamadas a funções locais definidas nas bibliotecas partilhadas? Não existe problema porque o cálculo do endereço é relativo ao valor actual do registo PC Generalização do problema: Para o código poder ser partilhado, não podem existir referências directas a símbolos que estão sujeitos a realocação
6 Solução PIC (Position Independent Code) Comando para gerar código independente da posição > gcc Wall pedantic c fpic dyn_alloc.c dyn_dbg.c A solução PIC passa por não codificar acessos directos a símbolos globais sujeitos a realocação O compilador gera acessos indirectos quando envolvidos símbolos globais sujeitos a realocação GOT (Global Offset Table): tabela com endereços sujeitos a realocação shared.c int shared_v = 10; int inc_sh(int v) { shared_v += 10; return v+1; } EBX = EPC call i686.get_pc_thunk.bx add ebx,0x1be0 mov eax,dword PTR [ebx-0x8] mov eax,dword PTR [eax] Conteúdo de shared_v em EAX GOT_OFFSET_TABLE Endereço de shared_v actualizado em EAX 0xc user stack read/write (.data shared lib).got read-only (.text shared lib) 0x heap read/write (.data,.bss) read-only (.init,.text,.rodata) 0x
7 Solução PIC para resolver chamadas a funções As chamadas a funções poderiam ser resolvidas de uma forma equivalente sofriam uma penalização equivalente na chamada.got_plt: contém entre outras entradas, a entrada onde será actualizado o endereço da função inc_sh.plt: acessos indirectos com base na tabela de endereços (lasy bind) app1.c #include "shared.h" int main() { ID para a int v; entrada inc_sh v = inc_sh(v); v = inc_sh(v); } Entrada com informação de identificação para o linker <inc_sh@plt-0x10>: push DWORD PTR.GOT.PLT[1] jmp DWORD PTR.GOT.PLT[2] <inc_sh@plt>: jmp DWORD PTR.GOT.PLT[3] push 0x0 jmp <inc_sh@plt-0x10> main: mov DWORD PTR [esp],eax call <inc_sh@plt> call <inc_sh@plt> Entrada com endereço do Linker dinâmico Entrada com o endereço da função inc_sh* * no primeiro acesso contém o endereço da instrução push 0x0 0xc user stack read/write (.data shared lib) read-only (.text shared lib) 0x heap read/write (.data,.bss).got.plt.plt read-only (.init,.text,.rodata) 0x
8 Carregamento da biblioteca em tempo de execução Interface programática (<dlfcn.h>) void * dlopen(const char * so_name, int mode); Carrega a biblioteca partilhada indicada (pode já estar em memória) Retorna o ponteiro (handle) a usar na linkagem de cada símbolo Retorna NULL se não for possível carregar a biblioteca O parâmetro mode pode ser RTLD_NOW ou RTLD_LAZY e RTLD_GLOBAL void * dlsym(void * handle, const char * symbol); Liga o símbolo pedido Retorna o ponteiro para a função ou variável do nome indicado Retorna NULL se não for possível fazer a ligação int dlclose(void * handle); Descarrega a biblioteca partilhada (se não estiver a ser usada por outros processos) Retorna 0 em caso de sucesso; retorna -1 em caso de erro char * dlerror(); Devolve string que descreve o erro mais recente ocorrido nas chamadas a dlopen, dlsym ou dlclose Retorna NULL se não aconteceu nenhum erro desde o início ou desde a última chamada a dlerror
9 Carregamento da biblioteca partilhada em tempo de execução execução Código fonte: app.c dyn_alloc.h dyn_dbg.h > gcc c app.c Ficheiros objectos realocáveis: Tradutores (cpp, cc, as) app.o Linker (ld) libc.so libdl.so Bibliotecas partilhadas: Informação de realocação e tabela de símbolos > gcc rdynamic o app app.o -ldl Ficheiro objecto executável parcialmente ligado: app Loader (execve) libc.so libdl.so Código e dados Dynamic linker (ld-linux.so) Executável em memória totalmente ligado
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)
Leia maisLaboratório de Programação - Exercício 29
Laboratório de Programação - Exercício 29 Bibliotecas e linkagem João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação João Araujo
Leia maisA separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software.
Módulos A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software. Uma parte de um programa num módulo interage com outra
Leia maisDesenvolvimento de programas em UNIX
4 Desenvolvimento de programas em UNIX Sumário: Fases de desenvolvimento de programas Compiladores Ficheiros em código objecto (.o) Visualização de símbolos dum ficheiro objecto (nm) Unificadores (linkers)
Leia maisArquitetura 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
Leia maisCompilação, Amarração e Relocação
Compilação, Amarração e Relocação Desenvolvimento modular Programas grandes devem ser implementados de forma modular Limitam a complexidade de manutenção do código Mudança em um módulo não requer a re-compilação
Leia maisLinguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira
Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Leia maisProgramando 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 maisConceitos Básicos sobre Programação Prática
Conceitos Básicos sobre Programação Prática Programa de computador conjunto de instruções e informação necessários ao alcance de um objectivo instruções + dados normalmente, guardados em ficheiros (em
Leia maisSoftware Básico. Silvio Fernandes Aula 15: Carregamento dinâmico
Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 15: Carregamento dinâmico Silvio Fernandes 2009.1 1 Introdução Bibliotecas
Leia maisLinguagem C (continuação)
Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João
Leia maisDesenvolvimento de Bibliotecas
5 Desenvolvimento de Bibliotecas Sumário: Tipos de bibliotecas: arquivo (.a) e partilhada (.so)bibliotecas do sistema (libc, libm,...) Criação duma biblioteca estática Visualização do conteúdo duma biblioteca
Leia maisDepartamento 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
Leia maisProgramação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas
Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Argumentos da linha de comando Funções recursivas Programação 2010/2011 DEEC-IST Arg. da linha de comando;
Leia maisLinguagem C Ficheiros Compilação Separada
Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir
Leia maisUSP - 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:
Leia maisProcedimentos. 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
Leia maisSumário. Sistemas Operativos 1
Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32
Leia maisGilberto A. S. Segundo. 24 de agosto de 2011
Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail
Leia maisArgumentos da linha de comando Exemplos Recursividade de funções Exemplos
Sumário Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Programação 2007/2008 DEEC-IST 1 Argumentos da linha de comando Motivação: Nas aulas de laboratório foi utilizado o compilador
Leia maisArquitecturas Alternativas. Java Virtual Machine
Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual
Leia maisProgramação em Sistemas Computacionais
Programação em Sistemas Computacionais Linguagem C Introdução, tipos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Jorge Martins (jmartins@isel.pt) baseado no slides de Pedro Pereira Enquadramento
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1
Introdução aos Sistemas de Computação (3) 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 maisProgramaçã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
Leia maisSERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO
SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO DESCENTRALIZADA DE VARGINHA CAMPUS VIII 1 Algoritmo, Contexto
Leia maisADTs (Abstract Data Types): Motivação
ADTs (Abstract Data Types): Motivação Mesmas estruturas são usadas com vários tipos de dados Listas Pilhas Amontoado FIFOs Inteiros Reais Strings Estruturas O procedimento para inserir um inteiro, real,
Leia maisALOCAÇÃO DINÂMICA DE MEMÓRIA
INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador
Leia maisProgramação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1
Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento
Leia maisSISTEMAS OPERATIVOS I
Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Ficha 6 Abril de 2006 Nuno Malheiro Maria João Viamonte Berta Batista Luis Lino Ferreira Sugestões
Leia maisDesenvolvimento de programas em UNIX
4 Desenvolvimento de programas em UNIX Sumário: Fases de desenvolvimento de programas Compiladores Ficheiros em código objecto (.o) Visualização de símbolos dum ficheiro objecto (nm) Unificadores (linkers)
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para
Leia maisProgramação ao nível da máquina
Programação ao nível da máquina Ponto de vista do programador O nível Assembly Modelo de programação Assembler (processo de compilação da linguagem C) Que assembly para AC? Introdução ao assembly NASM
Leia maisControlo de Execução. K&R: Capitulo 3
Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010
Leia maisArquitectura e Organização de Computadores
Arquitectura e Organização de Computadores (micro-arquitectura) atributos visíveis ao programador: I.S.A. tamanho da palavra (bits) registos Componentes que realizam a arquitectura: organização do CPU
Leia maisConceitos 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
Leia maisChamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free
Generalidades (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 2006-2007 1 s Chamada ao sistema: Chamada ao
Leia maisElementos de Linguagem C
Elementos de Linguagem C Parte II Elementos de linguagem C Parte II 1 Macros O pré-processador da linguagem C suporta a substituição de macros, criadas com #define nome_macro texto de substituição As macros
Leia maisIntrodução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores
Introdução à programação em PASCAL Aula de 22/10/2001 Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores Conteúdo Conceito de linguagem de programação O processo
Leia maisAmbiente 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
Leia maisConceitos básicos de programação de sistemas. ambientes UNIX e Linux Taisy Silva Weber
Conceitos básicos de programação de sistemas ambientes UNIX e Linux Taisy Silva Weber conceitos básicos programação de sistemas programação em ambientes UNIX: executáveis e scripts compiladores C e C++,
Leia maisO Ligador Dinâmico e o Ligador de Tempo de Execução
Capítulo 8 O Ligador Dinâmico e o Ligador de Tempo de Execução 010000000000000000 010000020000000000 013333333333333333 do Processo Dinâmicos Reservado ao Sistema Não Mapeado Text Data BSS Heap Stack 010000000000000000
Leia maisPROGRAMAÇÃ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
Leia maisAmbiente 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 maisMódulo 3. Depuração de Programas
Módulo 3 Depuração de Programas 1. Introdução Pretende-se com esta sessão teórico-prática que os alunos acompanhem a execução de um programa instrução a instrução, visualizando as alterações ao estado
Leia maisIntrodução à Computação: Máquinas Multiníveis
Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisPragmática das Linguagens de
Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Primeiro Exame/Segundo Teste 17/12/2004 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das
Leia maisProgramação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 12 Prof. Daniel Cavalcanti Jeronymo Layout de memória. Ponteiros: conceito, operadores de referência e dereferência, operações, aritmética e indireção múltipla Universidade
Leia maisVetores e Matrizes. Prof. Fabrício Olivetti de França Charles Henrique
Vetores e Matrizes Prof. Fabrício Olivetti de França Charles Henrique Vetores Estáticos Um vetor em C é declarado como: tipo nome[tamanho]; 2 Vetores Estáticos /* vetor de nome v1 com 100 elementos do
Leia maisIntel 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+3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]
Leia maisLinguagem 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
Leia maisLinguagens e a máquina
Linguagens e a máquina Seguem algumas breves definições das etapas utilizadas na geração de programas a partir de linguagens de programação: 1. A compilação pode ser entendida como o processo de traduzir
Leia maisComputação 2. Aula 7. Profª. Fabiany Ponteiros
Computação 2 Aula 7 Ponteiros Profª. Fabiany fabianyl@utfpr.edu.br O que são Ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra
Leia maisFundamentos de Programação
Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.
Leia maisA 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
Leia maisCOMPILAÇÃ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
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Leia maisINSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA
INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA Engenharia de Eletrónica e Telecomunicações e de Computadores e Engenharia Informática e de Computadores e Engenharia Informática, Redes e Telecomunicações INSTITUTO
Leia maisPonteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisProgramação Básica. Introdução à programação de computadores
Programação Básica Introdução à programação de computadores Software x Hardware Um computador é um equipamento capaz de processar dados de entrada gerando dados de saída. Essa saída será interpretada pelo
Leia maisModulo 12: alocação dinâmica de memória
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (
Leia mais! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema
Background! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema! Os sistemas actuais suportam o carregamento de múltiplos programas
Leia maisGestão de memória - Memory Management Unit (MMU)
Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por
Leia maisGestão de memória - Memory Management Unit (MMU)
Gestão de memória - Memory Management Unit (MMU) A distinção entre espaço de edereçamento virtual e espaço de endereçamento físico é fundamental na eficiente gestão do recurso memória física (RAM) por
Leia maisImplementaçã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
Leia maisAnhanguera 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
Leia maisSistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)
Sistemas Operacionais Laboratório 1 () Roteiro Linux em modo texto Acesso Interpretador de comandos Comandos Básicos Tratamento de Arquivos e Diretórios (Pasta*) Permissões Processos Editor de Texto Criação
Leia maisAula teórica 7. Preparado por eng.tatiana Kovalenko
Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana
Leia maisAmbiente de Desenvolvimento de Programas
Ambiente de Desenvolvimento de Programas Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação
Leia maisArquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it?
Arquitetura do SET de instruções Instruction SET CISC vs RISC What s assembly as to do with it? Low-level - high-level programming language Assambley CODE section.text global _start ;must be declared for
Leia maisA 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,
Leia mais1/34 GESTÃO DINÂMICA DE MEMÓRIA
1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i
Leia maisUNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais
UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06 Disciplina: Linguagem de Programação C Profª Viviane Todt Diverio Funções, variáveis, parâmetros formais
Leia maisESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018
ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 Apontadores O que é um apontador? Variável que contém
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisUNIDADE 1 Primeiros Programas
UNIDADE 1 Primeiros Programas Objetivo e Conteúdos da Unidade 1 Objetivo Criar alguns programas iniciais que permitam trabalhar rapida e facilmente com input e output (I/O) digitais. Vamos abordar os comandos
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia mais%LEOLRWHFDV(VWiWLFDVH'LQkPLFDV
38& 81,; Prof. Renato Mauro Carlos Henrique Pereira de Oliveira kkrj@terra.com.br 16 de setembro de 2002 %LEOLRWHFDV(VWiWLFDVH'LQkPLFDV %LEOLRWHFDV Biblioteca é um recurso de programação que trás vantagens
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Leia maisConhecendo 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 maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisConjunto de Instruções (ISA) I
Conjunto de Instruções (ISA) I José Costa Introdução à Arquitetura de Computadores Departamento de Engenharia Informática (DEI) Instituto Superior Técnico 2013-10-16 José Costa (DEI/IST) Conjunto de Instruções
Leia mais1/24 FICHEIROS DE TEXTO
1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:
Leia maisLinguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser
Leia maisSistemas 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
Leia maisLinguagem 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 maisSumário. Ficheiros. Ficheiros
Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções
Leia maisLinguagem de Programação C
Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem
Leia maisLaborató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
Leia maisBibliotecas 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
Leia maisArquitetura de Sistemas Operativos
Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Um processo é uma instância em execução de um programa. No sistema operativo Unix a única forma de se criar um novo processo (processo-filho)
Leia maisALGORITMOS 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 mais1 System Calls no Linux
Sistemas Operacionais Laboratorio - System Calls Adaptação do Laboratório 1 - Prof. Eduardo Zambon 1 System Calls no Linux Vamos mencionar aqui alguns pontos já discutidos em aula e introduzir novos conceitos
Leia maisProgramação. Cap. 12 Gestão de Memória Dinâmica
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação
Leia maisAula 07: - Mapa de memória de um processo - Ponteiros (parte 1)
MCTA028 Programação Estruturada Aula 07: - Mapa de memória de um processo - Ponteiros (parte 1) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-20108 Mapa de memória
Leia mais