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



Documentos relacionados
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

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

1 Code::Blocks Criação de projetos

3 Revisão de Software

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

Um sistema SMS 1 simplificado

Módulo 3. Depuração de Programas

Figura 1 - O computador

Programação 2009/2010 MEEC

Programação 2008/2009 MEEC Guia de instalação do PC de programação

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

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

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 1

PACWEB Módulo de Pesquisa MANUAL DO UTILIZADOR

Configuração do Ambiente de Trabalho

Download. Instalaça o. Geral

INTRODUÇÃO: 1 - Conectando na sua conta

Tarefa Orientada 2 Criar uma base de dados

Introdução. Capítulo Breve sinopse

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

O Manual do Desktop Sharing. Brad Hards Tradução: Pedro Morais

AMBIENTE DE PROGRAMAÇÃO PYTHON

Data de Aplicação 2/04/2009

Sistemas Operacionais

Backups Via FTP (File Transfer Protocol)

Pesquisa e organização de informação

Faculdade de Ciências da Universidade de Lisboa CURSO DE GPS. Módulo x. (Aula Prática) Reliance - Ashtech. Suas Aplicações Em SIG.

Redes de Computadores. Trabalho de Laboratório Nº2

1. Capturando pacotes a partir da execução do traceroute

Usando o simulador MIPS

O Processo de Programação

Manual XML-Validador-Conversor Registar recursos humanos

Manual de Instruções. Ligação à Contabilidade do programa ETICADATA gestão administrativa, versão gold line.

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Laboratório de Arquitectura de Computadores IST - Taguspark 2008/2009 Introdução aos sistemas binários Guião 1 9 a 13 de Março 2009

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Introdução aos Computadores

Desenvolvimento de programas em UNIX

MANUAL DE UTILIZAÇÃO TERMINAL DE PORTA

Como utilizar o P-touch Transfer Manager

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

possível até impedir o funcionamento do Windows. Faz-scuidado redobrado ao ativar determinados recursos.

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Capítulo 8. Software de Sistema

Introdução à Arquitetura de Computadores

Seu manual do usuário EPSON LQ-630

Processo de submissão - Informação para autores

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

Guião de Introdução ao Eclipse IDE Índice

A interface do Microsoft Visual Studio 2005

DIFERENCIAÇÃO. João Bosco M. Sobral

WEBSITE DEFIR PRO

Manual do Utilizador MAC OS

Estrutura do tema ISC

Algoritmos e Linguagem de Programação I

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

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

P HC XL - Nem calcula o produto que temos para si...

Manual do utilizador. Aplicação de agente

RECOLHA DE INFORMAÇÃO DE REMUNERAÇÕES, SUPLEMENTOS E DOS PONTOS DECORRENTES DA AVALIAÇÃO DE DESEMPENHO

Desenvolvimento de um Simulador de Gerenciamento de Memória

Introdução à aplicação Web

Manual de utilização do Moodle

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Manual utilização. Dezembro Instituto Politécnico de Viseu

Instituto Brasileiro de Informação em Ciência e Tecnologia. ibict. Autores

Figura 01 Kernel de um Sistema Operacional

Programação de Computadores I. Conhecendo a IDE Code::Blocks

MANUAL DE CONFIGURAÇÃO -ZIMBRA- Ajuda na configuração e utilização do cliente de correio eletrónico

Sistemas Operacionais

Fox Gerenciador de Sistemas

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Nota de Aula: Utilização da IDE Code::Blocks

Apresentação de SISTEMAS OPERATIVOS

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

Manual de Operação do Sistema de Tickets Support Suite

Gestão de Estágios e Projectos de Investigação Manual de Utilizador - Aluno

SISTEMAS OPERACIONAIS 2007

Manual de Infraestrutura para Alunos

2 de maio de Remote Scan

MC404 - Organização de Computadores. e Linguagem de Montagem Instituto de Computação. Universidade Estadual de Campinas

Tarefa Orientada 2 Visual Studio 2005 e Visual C#

VM Card. Referência das Definições Web das Funções Avançadas. Manuais do Utilizador

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Como atualizar o arquivo de licença do HSC ISS Free

Acesso à plataforma File Sender

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Assinar documentos digitalmente

MANUAL DE OPERAÇÃO do aremoto

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

Tutorial de Auxílio. figura 1.0 programa de gravação

Manual de Instalação Corporate

MANUAL DO USUÁRIO. Projeto/Software/Programa. CDAeM Cadastro de Artistas e Modelos JunioNet. Objetivo desse manual

Guia Rápido. Versão 9.0. Mover a perícia - não as pessoas

Transcrição:

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 ------------------------------------------------------------------------------------------------------------------------------------------------ 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 respetivas 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 faz-se usando o protocolo ssh. Em Unix/Linux ou MacOS usar simplesmente o comando ssh seguido do login na máquina remota (leisc@sc.di.uminho.pt). Se estiver num ambiente Windows, use a aplicação PuTTY para a conetividade com sistemas Unix através do protocolo ssh: preencha no campo "Host" na janela do PuTTY "sc.di.uminho.pt" e selecione o botão "Open"; no sistema remoto, introduza o login "leisc". A password de acesso a essa conta é "leisc1415" para todos; para uma partilha eficiente dessa conta única, crie uma diretoria com o seu nº de estudante da UM e trabalhe apenas nela. ------------------------------------------------------------------------------------------------------------------------------------------------ 1. Linguagem de alto nível (HLL) Com um editor de texto à sua escolha, crie 2 ficheiros, prog.c e soma.c, correspondente aos módulos em C apresentados na tabela. prog.c soma.c int accum=0; main () { void soma (int p) int x; { 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 projeto 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 objeto (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 ativar 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 diretamente pela máquina? Em que nível de abstração se encontra? É possível ainda visualizar o código assembly a partir do ficheiro objeto, quer dentro do depurador (com o comando disassemble soma), quer ainda usando um disassembler (desmontador) do Linux. Este tem a vantagem de mostrar ainda o código binário para além do código assembly. Assim, execute o comando objdump d soma.o

TPC4 e Guião: Níveis de Abstração 3 Exercício 8. O ficheiro soma.o desmontado, que esperaria que tivesse só linhas com código assembly da GNU (com instruções ISA-32), contém ainda outra informação "simbólica"? Identifique-a. 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 funções de bibliotecas 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 diretamente 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? Confirme no ficheiro prog.dump (como?). 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 diretamente 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 diretamente pela máquina, e (ii) em que nível de abstração se encontra.