MATA49 Programação de Software Básico



Documentos relacionados
Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução à Engenharia de Computação

Linguagem de Montagem

Arquitetura do conjunto de instruções (ISA); características de instruções de máquina; tipos de operandos

Computador Digital Circuitos de um computador (Hardware)

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

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

Software Básico (INF1018)

Organização e Arquitetura de Computadores I. de Computadores

Introdução à Engenharia de Computação

Linguagem de Montagem 2. Operações e Operandos

Linguagem de Programação

Programa de Unidade Curricular

Paradigmas de Linguagens de Programação

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

3 Revisão de Software

Organização de Computadores Software

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Introdução a Programação Funcional

Algoritmos e Programação Aula 01 Introdução a Computação

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

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

Linguagens de. Aula 01. Profa Cristiane Koehler

Programação de. Programa. Bibliografia. Páginas electrónicas de PM. Regras das aulas de laboratório. Métodos de Ensino - Aulas

Introdução à Arquitetura de Computadores IFES Campus Serra

Arquitetura de Computadores Universidade Guarulhos Prof. Erwin A. Uhlmann

Abstrações e Tecnologias Computacionais. Professor: André Luis Meneses Silva /msn: andreluis.ms@gmail.com Página: orgearq20101.wordpress.

Computador Cleópatra

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

Introdução à Programação Aula 2 Introdução à linguagem Python

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Introdução. Prof. MSc. Hugo Souza

Introdução à Arquitetura de Computadores

Capítulo 7 Nível da Linguagem Assembly

Convertendo Algoritmos para a Linguagem C

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Sistemas Operacionais Aula 2

Apostila da disciplina Introdução à Engenharia de Software Professor: Sandro Melo Faculdades São José Curso de Tecnologia de Sistemas de Informação

Sistemas de Computação

Arquitetura de Computadores

Computadores de Programação (MAB353)

Instalar uma versão do Ubuntu de 32 bits ou de 64 bits?

CURSO BÁSICO DE PROGRAMAÇÃO AULA 1. Introdução a Sistemas de Computação Noções de Lógica Introdução à Lógica de Programação

Introdução às Linguagens de Programação

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Prof.: Roberto Franciscatto. Capítulo 1 Introdução

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução à Ciência da Computação

Linguagens de Programação

Sistemas Operacionais

Aulas teóricas: As aulas serão teóricas e práticas.

Arquitetura de Computadores Moderna

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

ARQUITETURA DE COMPUTADORES. EMENTA Prof. Benito Piropo Da-Rin

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Introdução à Arquitetura de Computadores

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

PIM. CST em Análise e Desenvolvimento de Sistemas. Projeto Integrado Multidisciplinar. 4º/3º Períodos 2010/2 UNIVERSIDADE PAULISTA CURSO

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

Nível do Sistema Operacional

Programação Orientada a Objeto

Infra-Estrutura de Software. Introdução

Algoritmos DCC 119. Introdução e Conceitos Básicos

x86 Assembly Mini-Course

Sistemas Operacionais

Breve Histórico & Conceitos Básicos

Linguagem de Montagem

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

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

QUALIDADE DE SOFTWARE

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Algoritmos e programação

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

O Hardware e o Software do Computador

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Arquitetura de processadores: RISC e CISC

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

Programação de Computadores III

Sistemas Operacionais

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Introdução à Informática

MODELAGEM DE SISTEMAS DE INFORMAÇÃO

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

Linguagem de Programação I. Aula 05 Linguagem C

Transcrição:

MATA49 Programação de Software Básico Leandro Andrade leandrojsa<at>dcc.ufba.br PROF. LEANDRO ANDRADE 1

Planejamento Avaliação Uma prova Dois trabalhos práticos Média Final = (P1 + T1 + T2) / 3 Provável datas definirei em breve Aulas de reposição Sugestão: Sábados de manhã PROF. LEANDRO ANDRADE 2

Metodologia Aulas expositivas Exercícios práticos Aulas em laboratório Avaliar devido o grande número de alunos na turma Programação se aprende programando! PROF. LEANDRO ANDRADE 3

Referências Bibliográficas Paul A. Carter, PC Assembly Language Andrew S. Tanenbaum, Organização Estruturada de Computadores, 4ª edição, Prentice-Hall do Brasil, 2001 Manual oficial do Nasm Hugo Perez Perez. Tutorial de linguagem Assembly. Information Systems General Coordination. University of Guadalajara. Traduzido para o português por Jeferson Amaral. 1995 IA-32 Intel Architecture Software Developer s Manual volume1: Basic architecture. Intel Corporation. 2003 PROF. LEANDRO ANDRADE 4

Objetivo Programação em linguagem de montagem; Recursos de arquitetura para técnicas de programação; Arquitetura Intel Conceitos de implementação de baixo nível; PROF. LEANDRO ANDRADE 5

O que é uma linguagem de montagem? Qual a diferença entre assembly e assembler? PROF. LEANDRO ANDRADE 6

Antes, alguns conceitos... Tradutores: Programas que convertem um programa escrito em uma linguagem para outra Linguagem fonte Linguagem Alvo Geração do programa objeto Interpretação: Execução de programa fonte original Em certos caso geração de um código intermediário (Ex: Java) PROF. LEANDRO ANDRADE 7

Então... Os tradutores são divididos em dois tipos: Assembler (Montador): Quando a linguagem fonte é uma representação simbólica da linguagem de máquina Neste caso a linguagem fonte é chamada de linguagem de montagem (assembly language) Compilador: Quando a linguagem fonte é uma linguagem de alto nível e a alvo é uma linguagem de máquina numérica ou uma representação simbólica PROF. LEANDRO ANDRADE 8

Desse modo... Assembler é o programa que transforma a representação simbólica da linguagem de máquina em programa objeto (executável) Assembly é a linguagem fonte de representação simbólica da linguagem de máquina PROF. LEANDRO ANDRADE 9

Vejamos: PROF. LEANDRO ANDRADE 10

Linguagem de montagem Cada declaração produz uma instrução de máquina Facilita o processo de programação Acredite! Pior seria usar somente binários e hexadecimais Diretamente ligado a arquitetura do processador Dificulta o reuso para outras arquiteturas PROF. LEANDRO ANDRADE 11

Linguagem de montagem Linguagem de máquina BA0B01 B409 B44C CD21 48656C6C6F2C20576F Linguagem de montagem mov dx,msg mov ah,9 mov ah,4ch int 21h msg db 'Hello, World!',0Dh,0Ah,'$' PROF. LEANDRO ANDRADE 12

Linguagem de montagem Existência de linguagens híbridas São constituídas por instruções de alto nível Porém permitem a execução de instruções de máquina Exemplo: Linguagem C Por isso é considerada por muitos autores como uma linguagem de médio nível PROF. LEANDRO ANDRADE 13

Programação em linguagem de montagem Escrever um programa em linguagem de montagem demora muito mais do que escrever o mesmo em uma linguagem de alto nível Isso inclui: Depuração, manutenção Se arquitetura muda, logo o código muda também! Em outras palavras, programação em linguagem de montagem não trivial! PROF. LEANDRO ANDRADE 14

Por que ainda usar/aprender linguagem de montagem? PROF. LEANDRO ANDRADE 15

Por que usá-la? Busca por melhor desempenho O código de desenvolvido em linguagem de máquina pode ser muito menor (ou mais eficiente) do que um código compilado de uma linguagem de alto nível Uso de assembly em pontos críticos de desempenho É comum 10% do código de um programa ser responsável por 90% do tempo de execução PROF. LEANDRO ANDRADE 16

Por que usá-la? Acesso direto ao hardware Certos componentes só podem ser acessados por linguagem de montagem Ex: Tratadores de interrupção e exceção em um Sistema Operacional Ex: Controladores de dispositivos embutidos de tempo real PROF. LEANDRO ANDRADE 17

Por que usá-la? Escassez de memória escovando bits Desenvolvimento de compiladores Ex: Linaro para S.O Android melhoria de mais de 30% no desempenho Compreender o real funcionamento do computador São tantas camadas de abstração que esquecemos como o funcionamento realmente é PROF. LEANDRO ANDRADE 18

Linguagem de montagem Na disciplina utilizaremos a linguagem: Nasm Para Linux: Gcc + nasm Para Windows: Cygwin (inclui módulos do gcc e do nasm) http://www.cygwin.com/ No final utilizaremos C + Nasm (se der tempo) PROF. LEANDRO ANDRADE 19

Dúvidas?? PROF. LEANDRO ANDRADE 20