Ambiente de Desenvolvimento



Documentos relacionados
Ambiente de Desenvolvimento

2 Configuração do Ambiente de Desenvolvimento

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

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Introdução à Programação

MC-102 Aula 01. Instituto de Computação Unicamp

3 Revisão de Software

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

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

2. O AMBIENTE DE PROGRAMAÇÃO EM C

DCC 003 Algoritmos e Estruturas de Dados I Tutorial de instalação do GCC e do TextPad

Universidade Federal de Santa Maria Departamento de Eletrônica e Computação Disciplina de Fundamentos de Comuputadores Professor Raul Ceretta Nunes

Disciplina de Introdução à Computação para Engenharia Ambiental

Assembly na arquitetura IA-32 com NASM no Linux

Principais classes e conceitos básicos de Qt. Danilo Freire de Souza Santos

Conceitos básicos de programação de sistemas. ambientes UNIX e Linux Taisy Silva Weber

Programação Palm OS. Roteiro da Apresentação. Motivação

Plugins TerraView. Última revisão: 12/12/32006 Versão TerraLib: 3.1.4

Software Básico (INF1018)

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Tutorial: Aprenda a criar seu próprio makefile. Darcamo (Forúns Ubuntu)

INTRODUÇÃO À LINGUAGEM C/C++

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.

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

Tutorial: Programando no Linux

Introdução à Linguagem C/C++ Parte I

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

Programação científica C++

Editor Eclipse para Programas F

Programação de Sistemas

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

Desenvolvimento em Linux. Conceitos básico sobre Desenvolvimento na plataforma Linux. CEFET-PE 19/10/2006

Aula 05 Ferramentas de desenvolvimento

Ferramentas para desenvolvimento de Software Livre

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

SISTEMAS OPERATIVOS I

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

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

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Figura 01 Kernel de um Sistema Operacional

1. PROLOGO ==========

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

x86 Assembly Mini-Course

MATA49 Programação de Software Básico

Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva bs@cin.ufpe.br lauro Moura lauromoura@gmail.com

1 Code::Blocks Criação de projetos

Manual de Compilación

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

Introdução. Sistemas Operacionais

Sistema Operacional Ex: Complexo Computador multiusuário com vários terminais Tem que administrar todos os pedidos de usuários e assegurar que eles

Infra-Estrutura de Software. Introdução

Instalação do software cygwin

Usando emacs, vim e gdb. Um guia BEM básico

USP - ICMC - SSC SSC o. Semestre BSI. Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Linguagem de Programação I

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

Desenvolvendo aplicações grácas no linux sem esforç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

How to write Shellcodes por Luiz Fernando Camargo

Básico, Ferramentas e o Primeiro Programa em Qt

ALP Algoritmos e Programação. . Linguagens para Computadores

Introdução à Programação Estruturada Parte 1. Material da Prof. Ana Eliza

Edeyson Andrade Gomes

Programação de Computadores III

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

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

MANUAL DE UTILIZAÇÃO DO PLUGIN GERADOR DE PLUGINS DO TERRAVIEW

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2005/ Valores

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

Instalando o plugin CDT 4.0

Laboratório de Programação I

Estruturas de Dados. Apêndice A: Como compilar um programa C. J. L. Rangel. Introdução.

Chien 2D Tutorial Básico

SISTEMAS OPERACIONAIS

Infra-Estrutura de Software. Introdução. (cont.)

Sistemas Operacionais II

Disciplina: INF Programação I. 1 a aula prática Introdução ao ambiente do Microsoft Visual Studio 2010

Toolkit para Linux Embarcado. Autor: Thiago Waltrik Orientador: Miguel Alexandre Wisintainer

Transcrição:

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 Microprocessadores II Copyright (c) Walter Fetter Lages p.1

Tópicos Editor de Textos Compilador Montador Linker Linkagem Incremental Linkagem Estática Linkagem Dinâmica Make Gerenciador de Bibliotecas Depurador Ambiente Integrado de Desenvolvimento Copyright (c) Walter Fetter Lages p.2

Introdução Linguagem de máquina Assembly Montador Compilador Sistema Host Sistema Target Copyright (c) Walter Fetter Lages p.3

Editor de Textos Produz o arquivo fonte (.c,.pas,.java,.cpp,... ) MS-DOS Editor (edit) Windows notepad (notepad) Norton Editor (ne) Brief (brief) Windows Programmer s Editor (wpe) Joe s Own Editor (joe) Visual Editor (vi) VI Improoved (vim) KDE Text Editor (kedit) Editor of Macros (emacs) Copyright (c) Walter Fetter Lages p.4

Compilador Traduz os módulos fonte para outra linguagem (.asm,.s) ou para módulos objeto (.obj,.o) Microsoft C (cc) Turbo Pascal (tpc) Turbo C++ (tcc) Borland C++ (bcc) GNU Compiler Collection (gcc, g++, g77, gjc,... ) Copyright (c) Walter Fetter Lages p.5

Montador Traduz os módulos fonte em Assembly (.asm,.s) para módulos objeto (.obj,.o) Microsoft Macro Assembler (ml, masm) Turbo Assembler (tasm) GNU Assembler (as) Netwide Assembler (nasm) Copyright (c) Walter Fetter Lages p.6

Linker Liga os diversos módulos objeto (.obj,.o) para criar: um programa executável, ou um módulo maior, ou uma biblioteca de linkagem dinâmica As referências internas são resolvidas Microsoft Linker (link) Turbo Linker (tlink) GNU Linker (ld, collect2) Copyright (c) Walter Fetter Lages p.7

Fluxo Mínimo Editor de Texto... Compilador ou Montador... Linker programa fonte.c,.pas,.cpp,... módulo objeto.o Sistema Operacional programa executável (sem extensão) processo Copyright (c) Walter Fetter Lages p.8

Gerenciador de Bibliotecas Agrupa diversos módulos objeto (.obj,.o) em um arquivo de biblioteca (.lib,.a) As referências internas não são resolvidas A unidade de linkagem é o módulo objeto Microsoft Library Manager (lib) Turbo Library Manager (tlib) GNU Archive (ar) Copyright (c) Walter Fetter Lages p.9

Depurador debug Codeview (cv) Turbo Debugger (td) GNU Debuger (gdb) Front-ends (xxgdb, kdbg) Copyright (c) Walter Fetter Lages p.10

Linkagem Incremental Diversos módulos objeto são ligados para formar um módulo objeto maior São resolvidas as referências internas Copyright (c) Walter Fetter Lages p.11

Linkagem Estática Um ou mais módulos são ligados para criar um programa executável (.exe) ou imagem binária (.com) Podem ser ligados módulos em sí ou módulos contidos em bibliotecas estáticas Cada programa tem a sua própria copia dos módulos objeto (.obj,.o) Copyright (c) Walter Fetter Lages p.12

Linkagem Dinâmica Bibliotecas dinâmicas (.dll,.so) não são ligadas com o programa pelo linker Carregada pelo sistema operacional Compartilhada por todos os programas que usam a biblioteca dinâmica Copyright (c) Walter Fetter Lages p.13

Fluxo Completo Editor de Texto... programa fonte.c,.pas,.cpp,... Gerenciador de Biblioteca. Compilador ou Montador... módulo objeto.o biblioteca estática lib.a módulo objeto.o Linker Sistema Operacional programa executável (sem extensão) biblioteca dinâmica lib.so imagem binária.bin processo (E)EPROM Copyright (c) Walter Fetter Lages p.14

Make Programa para automatizar e otimizar o processo de compilação e linkagem Executa apenas os procedimentos que são necessários Funciona baseado na comparação das datas e horas dos arquivos Makefile = Arquivo interpretado pelo make Microsoft Program Maintenance Utility (make, nmake) Borland Make (make) GNU Make (make) Copyright (c) Walter Fetter Lages p.15

IDE Editor, Compilador, Linker, Make,... integrados Alguns podem ser configurados para utilizar diversos compiladores, linkers,... Microsoft Visual C (msc) Turbo Pascal (turbo) Borland C++ (bc) Windows Programmer s Editor (wpe) KDE Development Environment (kdevelop) Copyright (c) Walter Fetter Lages p.16

Exemplo 1 Hello, World! em C hello.c Makefile Copyright (c) Walter Fetter Lages p.17

hello.c #include <stdio.h> int main(int argc,char *argv[]) { printf("hello, world!\n"); return 0; } Copyright (c) Walter Fetter Lages p.18

Makefile 1 TARGET=hello 2 SRCS=$(TARGET).c 3 4 FLAGS=-O2 -Wall 5 INCLUDE=-I. -I$(HOME)/include 6 LIBDIR=-L$(HOME)/lib 7 LIBS= 8 9 CC=gcc 10 CFLAGS=$(FLAGS) $(INCLUDE) 11 LDFLAGS=$(LIBDIR) $(LIBS) Copyright (c) Walter Fetter Lages p.19

Makefile Continuação 13 all: $(TARGET) 14 15 $(TARGET): $(SRCS:.c=.o) 16 $(CC) -o $@ $^ $(LDFLAGS) 17 18 %.o: %.c 19 $(CC) -MMD $(CFLAGS) -c -o $@ $< 20 21 -include $(SRCS:.c=.d) 22 23 clean: 24 rm -f *~ *.bak *.o *.d 25 26 distclean: clean 27 rm -f $(TARGET) Copyright (c) Walter Fetter Lages p.20

Exemplo 2 Hello, World! em C++ hello.cpp Makefile Copyright (c) Walter Fetter Lages p.21

hello.cpp #include <iostream> int main(int argc,char *argv[]) { std::cout << "Hello, world!" << std::endl; return 0; } Copyright (c) Walter Fetter Lages p.22

Makefile 1 TARGET=hello 2 SRCS=$(TARGET).cpp 3 4 FLAGS=-O2 -Wall 5 INCLUDE=-I. -I$(HOME)/include -I$(HOME)/include/cpp 6 LIBDIR=-L$(HOME)/lib 7 LIBS= 8 9 CXX=g++ 10 CXXFLAGS=$(FLAGS) $(INCLUDE) 11 LDFLAGS=$(LIBDIR) $(LIBS) Copyright (c) Walter Fetter Lages p.23

Makefile Continuação 13 all: $(TARGET) 14 15 $(TARGET): $(SRCS:.cpp=.o) 16 $(CXX) -o $@ $^ $(LDFLAGS) 17 18 %.o: %.cpp 19 $(CXX) -MMD $(CXXFLAGS) -c -o $@ $< 20 21 -include $(SRCS:.cpp=.d) 22 23 clean: 24 rm -f *~ *.bak *.o *.d 25 26 distclean: clean 27 rm -f $(TARGET) Copyright (c) Walter Fetter Lages p.24

Exemplo 3 Hello, World! em Assembly Utiliza serviço do Linux para mostrar string Sintaxe do gas hello.s Makefile Copyright (c) Walter Fetter Lages p.25

hello.s.text.intel_syntax noprefix.global _start _start: mov edx,offset len # message length mov ecx,offset msg # pointer to message to write mov ebx,1 # file handle (stdout) mov eax,4 # system call number (sys_write) int 0x80 # call kernel mov ebx,0 # first argument: exit code mov eax,1 # system call number (sys_exit) int 0x80 # call kernel.data msg: len=.string "Hello, world!\n". - msg Copyright (c) Walter Fetter Lages p.26

Makefile 1 TARGET=hello 2 SRCS=$(TARGET).s 3 4 FLAGS=-gstabs -a= echo $@ cut -f 1 -d..lst 5 INCLUDE= 6 LIBDIR= 7 LIBS= 8 9 AS=as 10 ASFLAGS=$(FLAGS) $(INCLUDE) 11 LD=ld 12 LDFLAGS= Copyright (c) Walter Fetter Lages p.27

Makefile Continuação 14 all: $(TARGET) 15 16 $(TARGET): $(SRCS:.s=.o) 17 $(LD) $(LDFLAGS) -o $@ $(LIBS) $^ 18 19 %.o: %.s 20 $(AS) $(ASFLAGS) -o $@ $< 21 22 clean: 23 rm -f *~ *.bak *.o *.d *.lst 24 25 distclean: clean 26 rm -f $(TARGET) Copyright (c) Walter Fetter Lages p.28

Exemplo 4 Hello, World! com interface gráfica Utiliza o toolkit Qt versão 4 hello.cpp makefile makefile tem prioridade sobre o Makefile Utiliza qmake para gerar Makefile Copyright (c) Walter Fetter Lages p.29

hello.cpp #include <QApplication> #include <QPushButton> int main(int argc,char *argv[]) { QApplication app(argc,argv); QPushButton hello("hello, world!",0); hello.show(); } return app.exec(); Copyright (c) Walter Fetter Lages p.30

makefile 1 TARGET=hello 2 3 QMAKE=qmake 4 5 all: $(TARGET) 6 7 $(TARGET): Makefile 8 $(MAKE) -f Makefile 9 10 Makefile: $(TARGET).pro 11 $(QMAKE) -o $@ 12 13 $(TARGET).pro: $(PWD) 14 $(QMAKE) -project -o $@ Copyright (c) Walter Fetter Lages p.31

Referências [1] S. Chamberlain and I. L. Taylor. Using ld, the GNU Linker, 2003. <http://sourceware.org/binutils/docs>. [2] D. Elsner, J. Fenlason, and friends. Using as, the GNU Assembler, 2002. <http://sourceware.org/binutils/docs>. [3] R. H. Pesch, J. M. Osier, and Cygnus Support. The GNU Binary Utilities, 1993. <http://sourceware.org/binutils/docs>. [4] R. M. Stallman, R. McGrath, and P. Smith. GNU Make, A Program for Directing Recompilation. Boston, 2002. <http://www.gnu.org/software/make/manual/make.pdf>. [5] R. M. Stallman, R. Pesch, S. Shebs, and etal. Debugging with GDB, The GNU Source-Level Debugger. Boston, 2002. <http://sourceware.org/gdb/current/onlinedocs/gdb.pdf.gz>. [6] R. M. Stallman and The GCC Developer Community. Using the GNU Compiler Collection, 2004. <http://gcc.gnu.org/onlinedocs/gcc>. Copyright (c) Walter Fetter Lages p.32