LEI Sistemas de Computação 2011/12. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença



Documentos relacionados
LEI Sistemas de Computação 2014/15. Níveis de Abstração. TPC4 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença

MIEI Sistemas de Computação 2017/18. Níveis de Abstração. TPC5 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença

Conceitos Básicos sobre Programação Prática

Desenvolvimento de programas em UNIX

Módulo 10. Medição do Desempenho

1 Code::Blocks Criação de projetos

Estrutura do tema ISC

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Tutorial :: Introdução ao VHDL em ambiente Design Works

Programação 2009/2010 MEEC

Ferramentas Web, Web 2.0 e Software Livre em EVT

REDES INTEGRADAS DE TELECOMUNICAÇÕES II 2011 / 2012

Módulo 3. Depuração de Programas

Instalação e utilização do Eclipse / Fortran em Windows

3 Revisão de Software

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Manual do Gestor da Informação do Sistema

Central Inteligente Manual de utilização

Programação 2009/2010 MEEC MEAer

Convertendo Algoritmos para a Linguagem C

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Linguagens de Programação

Cópia de Segurança e Recuperação Manual do utilizador

Licenciatura em Eng.ª Informática Redes de Computadores - 2º Ano - 2º Semestre. Trabalho Nº 1 - Ethereal

Linguagem de Programação

Manual do Desktop Sharing. Brad Hards Tradução: Marcus Gama

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Paradigmas de Programação II Departamento de Informática Universidade do Minho LESI 1 o Ano MCC 2002/2003

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Um sistema SMS 1 simplificado

Figura 1 - O computador

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Curso:... Prova de Informática de Gestão (61020) Data: 27 de Janeiro de 2010

Lab 4 Análise de Pacotes utilizando o TCPDUMP

O Manual do ssc. Peter H. Grasch

Guia do Aluno. Campo Grande MS

Acessos Convergentes. Manual de Configuração e Utilização

Algoritmos e Técnicas de

Introdução à estrutura e funcionamento de um Sistema Informático

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Tarefa Orientada 2 Criar uma base de dados

GUIA DE PREENCHIMENTO DO FORMULÁRIO. GESTÃO DA MEDIDA 511 Assistência Técnica FEADER

MANUAL DA SECRETARIA

Ferramentas Web, Web 2.0 e Software Livre em EVT

Especificação do Trabalho Prático

Manual do Usuário do Produto EmiteNF-e. Manual do Usuário

UNIDADE 1 TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

LINGUAGEM C. Estrutura básica de um programa

Movie Maker. Fazer download de vídeos no You Tube. Para publicar no You Tube. O Windows Movie Maker 2 torna fácil para qualquer pessoa

Manual de introdução de Bomgar B300v

Ferramentas: jar e javadoc

COORDENAÇÃO DE EAD MANUAL DE UTILIZAÇÃO DO MOODLE 2.6 PERFIL ALUNO. Versão 1.0

Manual de Instalação da Plataforma Scorpion. 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit

Cópia de Segurança e Recuperação Manual do utilizador

Requerimentos e Especificações de Software

Bases de Dados. Lab 1: Introdução ao ambiente

Actualizaç ões e novas funcionalidades. Inoxnet. Versã o (c) EBASE Lda.

PROGRAMAÇÃO DE UM MICROPROCESSADOR

Curso:... Prova de Sistemas de Informação para Bibliotecas (21105) Nome:... Nº de Estudante:... B. I. nº... Assinatura do Vigilante:...

Utilizar o Office 365 no Windows Phone

Informática. Aula 04/12. Prof. Márcio Hollweg. Visite o Portal dos Concursos Públicos

Apresentação do VisualA

Objectivos Gerais da Aplicação 5 Requisitos Mínimos e Recomendados 5 Processo de Instalação 6

Departamento de Informática

Pizza Móvel. Manual do Utilizador. Seja muito bem-vindo caro utilizador

Serviço de Atendimento Online. Manual de ajuda para uma melhor utilização dos programas de apoio ao serviço de atendimento online: Messenger

Laboratório Estabelecendo uma Conexão de Console para um Roteador ou Switch

João Paulo Araújo Luciano Chaves Ricado Panaggio. Prof. Dr. Arnaldo Vieira Moura

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Apresentação. Rio de Janeiro, 19 de fevereiro de 2002 Waldemar Celes

FORCE. Editor e Compilador de FORTRAN: Apresentação. João Manuel R. S. Tavares

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Gestor de ligações Manual do Utilizador

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Laboratório 3 Compilador e IDE. Departamento de Sistemas e Informática. Disciplina de Introdução à Programação Ano Lectivo 2006/2007

Estrutura de Dados Básica

Boot Camp Manual de Instalação e Configuração

1 Introdução. 2 Funcionamento da Aplicação. Projeto de Programação - Entrega Final MEEC / Semestre Farm:TamagoISTi

A interface do Microsoft Visual Studio 2005

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

Relatório SHST

DISCIPLINA: Tecnologias da Informação e Comunicação ANO: 9º. Windows 7 Office 2010 Internet Explorer. Cd-roms COMPETÊNCIAS A DESENVOLVER

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

2007 Nokia. Todos os direitos reservados. Nokia, Nokia Connecting People, Nseries e N77 são marcas comerciais ou marcas registadas da Nokia

SISTEMAS OPERATIVOS I

Especificação do Trabalho

Invenções Implementadas por Computador (IIC) Patentes

Gestão de projectos na Web

Plugins TerraView. Versão TerraLib/TerraView: 3.2.0RC2. Código fonte completo da TerraLib na estrutura de diretórios sugerida no site da TerraLib 1.

Primeiro Trabalho: Desempenho de protocolos de encaminhamento em redes ad hoc móveis

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

MoreDoc. Guia de Instalação. Edição Community Versão 3.0

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

IBM SmartCloud para Social Business. Manual do Utilizador do IBM SmartCloud Engage e IBM SmartCloud Connections

MINISTÉRIO DA EDUCAÇÃO

Transcrição:

LEI Sistemas de Computação 2011/12 Níveis de Abstração TPC4 e Guião laboratorial Luís Paulo Santos e Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------ Objetivo geral Este documento é o guião para apoio ao funcionamento da primeira sessão laboratorial de SC. É indispensável a sua leitura/estudo prévio, incluindo a resolução e entrega dos exercícios propostos. Objetivo concreto Assimilar, ao longo de uma sessão laboratorial, os vários níveis de abstração envolvidos no processo de desenvolvimento de software e respectivas representações usadas em cada nível, bem como os mecanismos de conversão entre esses níveis. Para atingir estes objetivos: desenvolver um pequeno programa em C, constituído por 2 módulos, e acompanhar e visualizar as várias fases, usando ferramentas do Unix, gcc, gdb e objdump. Para garantir idênticos resultados em todos os trabalhos, usar sempre a máquina virtual que se disponibiliza remotamente, em ambiente Unix. O acesso remoto a partir de um ambiente Windows faz-se preenchendo no campo "Host" na janela do PuTTY "193.136.19.196" e selecionando o botão "Open". No terminal que aparecer introduza o login "leisc" e a password "leisc1112". O PuTTY é uma aplicação que garante conetividade com sistemas Unix usando o protocolo ssh. Para acesso remoto a partir dum sistema Unix com ssh instalado, usar simplesmente o comando ssh seguido do URL da máquina remota (193.136.19.196). Uma vez na máquina virtual, crie uma diretoria com o seu nº de estudante da UM e trabalhe nela apenas. ------------------------------------------------------------------------------------------------------------------------------------------------ 1. Linguagem de alto nível (HLL) Escreva em 2 ficheiros, usando o editor de texto que considerar mais adequado, os 2 módulos em C apresentados na tabela. prog.c soma.c main () int accum=0; { int x; void soma (int p) { soma (x); accum += p; } } Exercício 1. (TPC) Em que formato está representada a informação contida nestes ficheiros? Exercício 2. (TPC) Qual o tamanho da cada um dos ficheiros? (Calcule manualmente e verifique com um comando da shell do Linux) 2. Compilação Por compilação entende-se a conversão de um programa escrito num dado nível de abstração noutro de nível inferior. Historicamente o termo surgiu da conversão de um programa escrito numa HLL para o nível do assembly. Contudo, a maior parte dos utilitários actuais conhecidos como compiladores permitem, com uma única linha de comando, passar diretamente do nível HLL para o nível da linguagem máquina, executando na realidade 4 programas distintos, correspondentes a 4 fases diferentes: pré-processamento, compilação, montagem (com o assembler) e união (com o linker). Uma descrição mais detalhada destas fases encontra-se no texto que acompanha as aulas teóricas (Introdução aos Sistemas de Computação, Cap.3, com material retirado do livro CSAPP).

TPC4 e Guião: Níveis de Abstração 2 As diversas versões do manual do compilador de C distribuído pelo projecto GNU, o gcc, estão disponíveis online em http://www.gnu.org/software/gcc/onlinedocs/., em que a versão disponível na máquina virtual é a 3.2.3. Um sumário muito compacto do manual duma versão do gcc é incluído no fim deste guião. Compile o módulo soma.c usando o comando gcc -Wall O2 S soma.c O switch Wall activa o envio de mensagens de diagnóstico relatando a existência de estruturas de código que poderão conter imprecisões ou potenciais fontes de erro, o switch O2 indica ao compilador para usar o nível dois de otimização do código, enquanto o switch S indica que deve gerar apenas o código assembly. Este comando gera o ficheiro soma.s. Exercício 3. (TPC) Em que formato está representada a informação contida neste novo ficheiro? Exercício 4. Usando um programa adequado visualize o conteúdo de soma.s. Encontra informação simbólica neste programa? Qual? Exercício 5. (TPC) Este programa (o ficheiro soma.s) pode ser executado diretamente pela máquina? Em que nível de abstração se encontra? 3. Compilação e montagem (uso do assembler) Use o comando gcc -Wall O2 c soma.c para gerar o ficheiro soma.o (código binário resultante de compilação e montagem do módulo soma.c); o switch c indica que o processo termina após a montagem. O código binário não pode ser visualizado usando um editor de texto, pois o formato da informação já não é ASCII. Para visualizar o conteúdo de um ficheiro objecto (binário) pode-se usar um debugger (depurador) fornecido com o Linux. Neste caso, para se iniciar o processo de depuração, far-se-ia: gdb soma.o Uma vez dentro do depurador, pode-se activar o comando: (gdb) x/23xb soma o qual irá examinar e mostrar (abreviado x ) 23 hex-formatted bytes (abreviado para xb ) a partir do início do código da função soma. Exercício 6. O que representam os valores que está a visualizar? Exercício 7. (TPC) Este programa (o ficheiro soma.o) pode ser executado directamente pela máquina? Em que nível de abstração se encontra? O conteúdo dum ficheiro objecto pode também ser visualizado usando disassemblers (desmontadores), com uma vantagem: estes geram também código assembly a partir do ficheiro objecto. Execute o comando objdump d soma.o

TPC4 e Guião: Níveis de Abstração 3 Exercício 8. Este programa contém informação simbólica? Qual? Exercício 9. Como está representada a variável accum? Porque razão é ela representada desta forma? Exercício 10. Quantas instruções tem a função soma? Quantos bytes ocupa? Quais são as instruções mais curtas e quais as mais longas? 4. União (uso do linker) e execução Para gerar o programa executável é necessário ligar os dois módulos entre si e com quaisquer outras bibliotecas de funções que sejam utilizadas, assim como acrescentar código que faz o interface com o sistema operativo. Este é o papel do linker. Execute o comando gcc -Wall O2 o prog prog.c soma.o Exercício 11. O resultado da execução deste comando é colocado no ficheiro prog. Qual o formato da informação aí contida? Este ficheiro pode ser executado directamente pela máquina? Desmonte este programa executável e guarde-o num ficheiro de texto, usando o comando objdump d prog > prog.dump Exercício 12. Localize no ficheiro prog.dump a função soma. Como está representada a variável accum? Exercício 13. Porque ordem são armazenados na memória os 4 bytes correspondentes ao endereço de accum? Little-endian ou big-endian? Exercício 14. Como é que a função main passa o controlo (invoca) a função soma?

TPC4 e Guião: Níveis de Abstração 4 5. Sumário do manual de gcc GCC(1) GNU Tools GCC(1) NAME gcc, g++ - GNU project C and C++ Compiler (gcc-3.43) SYNOPSIS gcc [ option filename ]... DESCRIPTION The C and C++ compiler are integrated. Both process input files through one or more of four stages: preprocessing, compilation, assembly, and linking. Source file-name suffixes identify the source language, but which name you use for the compiler governs default assumptions: gcc assumes preprocessed (.i) files are C and assumes C style linking. Suffixes of source file names indicate the language and kind of processing to be done:.c C source; preprocess, compile, assemble.i preprocessed C; compile, assemble.s Assembler source; assemble.o Object file: pass to the linker. OPTIONS Overall Options -c -S -E -o file -pipe -v -x language C Language Options Warning Options Debugging Options Optimization Options Preprocessor Options Assembler Option Linker Options Machine Dependent Options

TPC4 e Guião: Níveis de Abstração 5 Nº Nome: Turma: Resolução dos exercícios (Nota: Apresente sempre os cálculos que efectuar no verso da folha; o não cumprimento desta regra equivale à não entrega do trabalho.) 1. Indique em que formato está representada a informação contida nos ficheiros prog.c e soma.c. 2. Indique qual o tamanho da cada um dos ficheiros. Calcule manualmente e verifique com um comando da shell do Linux (que comando usou?). 3. Indique em que formato está representada a informação contida no ficheiro soma.s. 5. Indique (i) se o programa no ficheiro soma.s pode ser executado directamente pela máquina, e (ii) em que nível de abstração se encontra. 7. Indique (i) se o programa no ficheiro soma.o pode ser executado directamente pela máquina, e (ii) em que nível de abstração se encontra.