Nivel de Linguagem de Montagem (Assembly)



Documentos relacionados
Introdução. Nível da Linguagem de Montagem. Linguagem de Montagem (2) Linguagem de Montagem (1) Linguagem de Montagem

Capítulo 7 Nível da Linguagem Assembly

Nível da Linguagem de Montagem

Introdução à Computação: Máquinas Multiníveis

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Sistemas Operacionais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Introdução. (Aula 2) Organização Estruturada de Computadores

Um Conjunto de Softwares Básicos Integrados para Arquitetura SIC/XE

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

AJProença, Sistemas de Computação, UMinho, 2017/18 1

TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 1

Infraestrutura de Hardware. Instruindo um Computador

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

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

Introdução à Computação

Linguagens e a máquina

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Software Básico. nível de linguagem de montagem (assembly) Tanembaum, capítulo 7

Sistemas Operacionais

Conjunto de Instruções e Modelos de Arquiteturas

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Conceitos básicos sobre computadores (continuação)

Arquitetura de Computadores

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Lic. Engenharia de Sistemas e Informática

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Infraestrutura de Hardware. Funcionamento de um Computador

Introdução à Organização de Computadores. Aula 8

Procedimentos. Sistemas de Computação

Aula 2 - Programação de Computadores - CI208 1/21

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I

Linguagens de Programação Classificação

Máquina Microprogramada

Infraestrutura de Hardware. Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86

Compiladores I Prof. Ricardo Santos (cap 1)

PCS3616. Programação de Sistemas (Sistemas de Programação) Semana 8, Aula 14. Editores de Ligação e Relocadores Programação em linguagem de montagem

Linguagem de Montagem do NeanderX

Implementação da programação modular II

Arquiteturas RISC e CISC. Adão de Melo Neto

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

3. O NIVEL DA LINGUAGEM DE MONTAGEM (Cont.)

Organização de Computadores

Puca Huachi Vaz Penna

Estrutura do tema ISC

Organização e Arquitetura de Computadores I

William Stallings Computer Organization and Architecture

9. Software de Sistema - Montadores (capítulo 9 do livro texto)

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Conjunto de Instruções e Modelos de Arquiteturas

Universidade Católica de Pelotas Bacharelado em Ciência da Computação Linguagens Formais e Autômatos TEXTO 6 Introdução à Compilação

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

1. SINTAXE DA LINGUAGEM ASSEMBLY

Unidade de Controle. UC - Introdução

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

sumário 1 bases numéricas 1 2 sistemas de numeração em computação introdução representação de números... 3

FORMATO DO PROGRAMA FONTE

Disciplina de Organização de Computadores Digitais

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Arquitetura de von Neumann

Sistemas Operacionais. Conceitos de Hardware e Arquitetura de computadores

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Projeto de Compiladores

Infra-Estrutura de Software. Introdução

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Sistemas de Computação

PROGRAMAÇÃO I. Introdução

Organização e Arquitetura de Computadores I

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais

Aula de hoje. Programação. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores

Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria.

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly

Organização e Arquitetura de Computadores I

Capítulo 6: Linguagens de Programação

Introdução à Programação de Computadores Parte I

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

Programação de Computadores:

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Introdução aos Computadores Introdução à Ciência de Computadores Outubro / 16

Arquitecturas Alternativas. Java Virtual Machine

Fundamentos de Programação 1

Programação Python. Nesta aula... 1 Programação. 2 Python. Operadores e Operandos Variáveis, Expressões, Instruções Funções Ciclos Comentários

LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti

Arquitectura e Organização de Computadores

Arquitectura de Computadores

Arquitectura e Organização de Computadores

Compiladores. Introdução à Compiladores

Organização de um computador. O que é um computador Organização de um computador Arquitectura de von Neumann

Arquitetura e Organização de Computadores

Organização de Computadores 1

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

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

Transcrição:

Nivel de Linguagem de Montagem (Assembly) Orlando Loques setembro 2006 Referências: Structured Computer Organization (capítulo 7), A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and Architecture, W. Stallings, Prentice Hall

Motivação (i) Tradução X interpretação; Java usa dois níveis: O compilador traduz Java para bytecode A máquina virtual interpreta o bytecode Tradutores: Compilador: Java, C, Fortran Montador/Assembler representação simbólica da linguagem da máquina; inclui instruções e endereços; cada instrução corresponde exatamente a uma instrução do nível ISA Resultado da Tradução da Linguagem de Montagem: Programa Objeto / Programa Binário Executável

Motivação (ii) Programar em Assembler é mais difícil e toma mais tempo que usando linguagem de alto-nível Por quê usar Assembler? Desempenho Expert pode produzir código mais rápido e menor; essencial em aplicações embutidas, etc, eg Smartcards Acesso a detalhes Interrupção, trap handlers, E/S; gerenciamento de memória virtual

Motivação (iii) Comparação de linguagem de montagem e linguagem de alto nível, considerando um ajuste fino (tuning)

Motivação (iv) 1. O sucesso do projeto pode depender do desempenho 2. Algumas aplicações têm limitações de memória 3. Acesso a detalhes de baixo nível 4. Projeto de compiladores 5. Estudo de arquitetura de computadores 6. Etc

Formatos de Comandos (i) Computação de N = I + J - Pentium 4 Formato - MASM (microsoft macro assembler)

Campos: Rótulo / Label: representam posições/endereços na memória Opcode Operandos Comentários

Formatos de Comandos (ii) Computação de N = I + J - Motorola 680x0.

Formatos de Comandos (iii) Computação de N = I + J - SPARC.

Pseudo-Instruções (i) Some of the pseudoinstructions available in the Pentium 4 assembler (MASM). Pseudo-instruções (comandos para o próprio assembler) disponíveis no assembler do Pentium 4 (MASM)

Pseudo-Instruções (ii) Pseudo-instruções disponíveis no assembler do Pentium 4 (MASM) * *

Pseudo-Instruções (iii) BASE EQU 1000; o nome BASE pode ser usado em todo lugar ao invés de 1000 LIMIT EQU 4*BASE + 2000; pode ser definido através de expressões DB, DW, DD, DQ alocam memória para variáveis TABLE DB 11, 23, 49 nomeia e inicializa 3 bytes

Definição de Macro, Chamada e Expansão (i) Representam trechos de código que têm que ser repetidos dentro do programa Codigo para intercambiar P e Q duas vezes definição da macro (a) sem macro (b) com macro

Definição de Macro, Chamada e Expansão (i) Comparação de chamadas macros com chamadas de procedimentos

Macros com Parâmetros (a) sem macro (b) com macro

Montagem Condicional M1 M2 M2 ENDM MACRO IF WORDSIZE GT 16 MACRO ELSE ENDIF ENDM MACRO ENDM

Assemblers de dois Passos (i) Quais são os endereços usados nos labels (desvios e referências)? Forward reference problem No primeiro passo os símbolos são coletados na Tabela de Símbolos; as macros também são expandidas, três tabelas são usadas: Tabela de símbolos Tabela de Códigos de Operação Tabela de Pseudo-instruções

Assemblers de dois Passos (i) Instruction location counter (ILC): mantém o controle dos endereços onde as instruções serão carregadas na memória. Neste exemplo, os comandos antes de MARIA ocupam 100 bytes.

Assemblers de dois Passos (ii) Tabela de Símbolos para o programa anterior Campo Outras Informações: Tamanho do dado associado ao campo Visibilidade do simbolo Bits de realocação se necessário

Assemblers de dois Passos (iii) Tabela de códigos de operação (parcial) de um montador para o Pentium 4 A classe da instrução define a tradução da instrução, cada classe sendo associada a procedimentos específicos de tradução do montador

... Passo I (i)

... Passo I (ii) Pass one of a simple assembler....

... Passo I (iii)

... Passo II (i)

Passo II (i) Geração do programa objeto e da listagem Geração de informação para o Linker Usado na composição de programas a partir de módulos Identificação de Erros

... Passo II (ii)

Tabela de Simbolos - Codificação Hash (a)símbolos, valores e códigos de hash derivados dos símbolos (b) tabela hash, com lista

Ligação e Carregamento (Linking and Loading) A geração de um programa binário executável, a partir de um conjunto de programas traduzidos independentemente, requer o uso de um ligador (loader)

Tarefas realizadas pelo Linker (i) Cada módulo tem o seu espaço de endereçamento próprio começando no endereço 0

Tarefas realizadas pelo Linker (ii) Endereço inicial de montagem = 100 Módulos objetos após posicionados na imagem binária Binário executável: Módulos objetos depois da ligação e realocação, considerando a base 100 Módulo Tamanho Endereço Inicial A 400 100 B 600 500 C 500 1100 + 100 D 300 1600

Estrutura de um Módulo Objeto Estrutura interna de Módulo Objeto produzida pelo tradutor Identificação: nome, tamanho das diversas partes do módulo Entry point table: símbolos que podem ser referenciados externamente External reference table: símbolos referenciados em outros módulos Código e constantes Relocation Dictionary: especifica os endereços que tem que ser realocados; tabela ou bit map End of module: check sum, endereço de início do programa

Instante de Ligação e Relocação Dinâmica O programa realocado anteriormente movido 300 endereços acima Diversas instruções usam referências a endereços incorretos A ligação dinâmica ajuda a resolver o problema

Instante de Ligação Quando o programa é escrito Quando o programa é traduzido Quando o programa é ligado, mas antes de ser carregado Quando o programa é carregado Quando um registro de base usado para endereçamento é carregado Quando a instrução contendo o endereço é carregada

Ligação Dinâmica no MULTICS (i) Antes da chamada a EARTH Os endereços estão indefinidos

Ligação Dinâmica no MULTICS (ii) Depois da chamada e ligação de EARTH O endereço é atualizado na tabela

Ligação Dinâmica no Windows Uso de uma DLL por dois processos DLL: Dynamic Link Library uma coleção de procedimentos que pode ser carregada na memória Servem para definir interfaces de módulos: jogos, bibliotecas, drives, etc