Assembly Equipe: David Lopes Embiruçú (dle) Emanuel Felipe Príncipe Carvalho (efpc) Luis Otávio Cavalcante Borba (locb) Rosana Silva Matos (rsm2)

Slides:



Advertisements
Apresentações semelhantes
Capitulo 6: Entrada e Saída
Advertisements

1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Linguagem de Programação I
Introdução à Ciência da Computação Linguagens de Programação.
Augusto NevesJoão CarlosRodrigo Paula Linguagem de Programação C++ Componentes do Grupo.
Linguagem de Montagem Visão geral.
Paradigmas de Linguagens Conceitos Básicos
Paradigmas de Programação
Engenharia de Software
ELEMENTOS DA INFORMÁTICA
Programação Aplicada Luiz Silveira Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Aula 02: Conceitos e tipos de linguagens.
ARQUITETURAS RISC E CISC
LABORATÓRIO DE PROGRAMAÇÃO
Conceitos Básicos de Computação O ABC da Computação.
INTRODUÇÃO À PROGRAMAÇÃO
Programação Lógica: PROLOG
APL/SNOBOL As primeiras linguagens dinâmicas
Softwares - Básicos e Aplicativos
Concepts and Capabilities
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Ferramentas Programação
Softwares.
Arquitetura de Computadores
Linguagens de Programação
Aula 2 Aspectos Preliminares
Prof. Msc. Raul Paradeda Aula 2 Introdução
Threads.
Informática.
Lógica de Programação UNIDADE 1 – Introdução a) Computador
JAVA: Conceitos Iniciais
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 6 Vetores e Matrizes
Ameliara Freire O comando de entrada de dados é utilizado quando desejamos fornecer um valor para um nosso programa. Os dispositivos.
Programação Avançada Prof. Natalia Castro Fernandes
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 1 - Introdução ao C Ameliara Freire.
Linguagens de programação
PCI- Introdução à Computação
Introdução a Linguagens de Programação
Abertura.
Caracterização e Objetivos das LP
Entrada e Saída (E/S ou I/O)
Interface entre as linguagens C e Assembly 8085
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Definição A rigor, tudo o que pode ser armazenado eletronicamente pode ser chamado de software. Consideraremos aqui, como software, apenas os conjuntos.
Sistemas Operacionais
Geração de Código aula-12-geração-de-código.pdf.
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Sistemas Operacionais
Arquiteturas RISC x CISC
Back-End Compilação aula-11-back-end.pdf.
Algoritmos e Programação I
Fundamentos de linguagens de programação
Linguagem de Programação I PARTE i
Sistemas Operacionais
Student Tech Clubs Desenvolvimento WEB Antonio Ladeia Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas Instituto Federal da Bahia Introdução.
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
A linguagem de Máquina – Instruções Básicas
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
UD 1 - CONCEITOS DE INFORMÁTICA
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Estruturas de Sistemas Operacionais. Componentes Comuns do Sistema Administração de Processos Administração da Memória Principal Administração do Armazenamento.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
Ewerton Patrick, Fernando Henrique, Jéssica Rebeca.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Sistemas de Informações Fundamentos da Computação 3. Software Márcio Aurélio Ribeiro Moreira
Transcrição da apresentação:

Assembly Equipe: David Lopes Embiruçú (dle) Emanuel Felipe Príncipe Carvalho (efpc) Luis Otávio Cavalcante Borba (locb) Rosana Silva Matos (rsm2)

Assembly “There are three reasons for using assembly language: speed, speed, and more speed.” Autor e data desconhecidos

História Criada nos anos 50 com o intuito de tornar a programação mais humana Antes do assembly os programadores tinham que programar pensando em 0’s e 1’s Essa forma de programar tornava tanto a escrita como a leitura dos programas difícil e confusa Uma grande quantidade de programas foram escritos inteiramente em assembly antes do aparecimento das HLL (High Level Languages) nos anos 70 e no inicio dos anos 80

Paradigma Classificação  Linguagem de primeira geração  Sem fontes que especifiquem o seu paradigma Conclusão  Peculiaridade que se aproxima do paradigma imperativo  No entanto o Fortran foi a primeira linguagem classificada como tal

Utilização Por ser uma linguagem de baixo nível, assembly foi bastante utilizada para a escrita de programas que precisavam de alto desempenho, baixo consumo de memória ou que para realizar alguma ação que uma HLL não permitia Exemplos a maioria das HLL’s não permitem o envio de um byte para a porta serial desenvolvimento de algumas partes dos sistemas operacionais que necessitam de um alto desempenho desenvolvimento de drivers de dispositivos, como os drivers de mouses e impressoras implementação de rotinas de alta velocidade para compressão e encriptação de dados e em otimizações de rotinas gráficas também pode ser utilizado em códigos maliciosos, como vírus de computador

Sintaxe A sintaxe de Assembly depende intrinsecamente do assembler em questão, diferindo geralmente apenas os mnemônicos e diretivas Hoje em dia duas vertentes de sintaxe se destacam, At&t e x86 Principais diferenças: Registradores Origem/Destino Constantes Comandos Endereçamento através dos registradores

Especificação Ligação íntima de assembly e seus montadores não é possível apresentar uma documentação da linguagem sem que essa envolva algum assembler Assembly também é extremamente dependente da arquitetura sobre o qual é feito Cada dispositivo tem seu próprio assembly e há uma especificação para cada um deles  Principais assemblers que usam sintaxe Intel: Fasm (Flat Assembler) Masm (Microsoft Assembler) Nasm (Netwide Assembler) Tasm (Turbo Assembler)  Principais assemblers que usam sintaxe At&t: Gnu Gas

Implementação Plataforma: apenas para High Level Assembly (HLA) Compiladores: fasm, goasm, masm, nasm, tasm, gas entre outros Interpretadores: não há

Ambientes de desenvolvimento Editores como Notepad, Context, gedit, Emacs e editores de texto em geral servem como ambientes rústicos de trabalho Alguns compiladores seguem acompanhados de IDEs Turbo Assembler IDE AsmEdit que acompanham o Tasm e WinAsm Quick Editor que acompanha o Masm

Exemplos de programas Os sistemas operacionais modernos com trechos de código em assembly em seus device drivers Sistemas onde é necessário extremo controle sobre o código ou mesmo sistemas em tempo real como jogos MMORPG Sistemas onde não existem HLL (sistemas muito novos) Exemplo de um hello world feito com a sintaxe x86 e para o Nasm:

Vantagens Velocidade. Programas em linguagem assembly são geralmente os programas mais rápidos. Espaço. Os programas em linguagem assembly são geralmente menores. Capacidade. Você pode fazer coisas em assembly que são difíceis ou impossíveis em linguagens de alto nível. Conhecimento. Seu conhecimento em assembly irá ajudar a escrever melhores programas, mesmo usando linguagens de alto nível. Total domínio do processo de geração de código por parte do programador.

Desvantagens Difícil de aprender, de ler, entender, debugar, escrever e difícil manutenção Programar em assembly consome muito tempo. Hoje em dia as máquinas são rápidas e não precisamos mais usar assembly. Se você precisar de mais velocidade é melhor escolher um algoritimo melhor do que trocar para o assembly. As máquinas hoje em dia têm muita memória, então salvar espaço usando o assembly não é importante. A linguagem não é portável.

Conclusão Chegamos a uma breve conclusão: Apesar de ter perdido sua importância na implementação de softwares, assembly possivelmente nunca perderá sua utilidade na fabricação de determinados artefatos de software. Esse fato se dá pela característica de extremo baixo nível desta linguagem.

Perguntas? A hora é essa!