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



Documentos relacionados
PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

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

Capítulo 7 Nível da Linguagem Assembly

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Introdução à Arquitetura de Computadores

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

[RÓTULO:] MNEMÔNICO [OPERANDOS] [;COMENTÁRIO]

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

Componentes do Computador e. aula 3. Profa. Débora Matos

Arquitetura de Computadores

Geração e Otimização de Código

Sistemas Operacionais

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

Edeyson Andrade Gomes

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

Software Básico (INF1018)

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Componentes da linguagem C++

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

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

Linguagem de Programação I

Figura 1 - O computador

Nível da Linguagem de Montagem

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

28/9/2010. Unidade de Controle Funcionamento e Implementação

Arquiteturas RISC. (Reduced Instructions Set Computers)

Nivel de Linguagem de Montagem (Assembly)

1. SINTAXE DA LINGUAGEM ASSEMBLY

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

INE5317 Linguagens Formais e Compiladores. AULA 2: Es trutura geral dos Compiladores

Linguagem de Montagem 2. Operações e Operandos

Geração de código intermediário. Novembro 2006

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Introdução à Arquitetura de Computadores IFES Campus Serra

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Programação de Computadores III

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

Introdução a Informática. Prof.: Roberto Franciscatto

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

3 Revisão de Software

Usando o simulador MIPS

Capítulo 2: Introdução à Linguagem C

Exercícios Gerência de Memória

O Processo de Programação

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Breve Histórico & Conceitos Básicos

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

BARRAMENTO DO SISTEMA

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Processos. Adão de Melo Neto

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Protótipo de Gerador de Código Executável no Ambiente FURBOL

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

Capacidade de Armazenamento

Capítulo 8. Software de Sistema

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Introdução aos Sistemas Operativos

Conjunto de Instruções e Arquitectura p.1

4-1. Parte2: A Arquitetura do Conjunto de Instruções

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

Trabalho de Conclusão de Curso TUTORIAL DA LINGUAGEM ASSEMBLY UTILIZANDO O VXT

Resolução de problemas e desenvolvimento de algoritmos

3. Arquitetura Básica do Computador

INF 1005 Programação I

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

ARQUITETURA DE COMPUTADORES

PIC16F628a. Pinagem do PIC16F628a:

Introdução à Programação

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Organização Básica do Computador

Primeiro Curso de Programação em C 3 a Edição

Capítulo 1 Introdução

Representação de Dados (inteiros não negativos)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Informática I. Aula 5. Aula 5-13/05/2006 1

SIS17-Arquitetura de Computadores

Figura 01 Kernel de um Sistema Operacional

Software. Professora Milene Selbach Silveira Prof. Celso Maciel da Costa Faculdade de Informática - PUCRS

Sistemas Operacionais

Sistemas Operacionais

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

Microprocessadores. Prof. Leonardo Barreto Campos 1

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

UFRPE Prof. Gustavo Callou

MIPS. Prof. Carlos Bazilio

RISC - Reduced Instruction Set Computer

Transcrição:

TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem Ronaldo de Freitas Zampolo LaPS/ENGCOMP/ITEC/UFPA TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 1

Tópicos Introdução à Linguagem de Montagem Macros O Processo de Montagem Ligação e Carga de Procedimentos TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 2

Introdução à Linguagem de Montagem Tradutores: Montagem: linguagem-fonte é essencialmente uma representação simbólica para uma linguagem-alvo numérica Compilador: linguagem-fonte de alto-nível, com linguagem-alvo numérica ou uma representação simbólica para uma linguagem-alvo numérica TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 3

Introdução à Linguagem de Montagem O que é uma linguagem de montagem? Linguagem pura (sem aditivos): cada comando = uma instrução ISA Opcodes ISA mnemônicos Posições de memória nomes simbólicos Registradores nomes simbólicos TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 4

Introdução à Linguagem de Montagem Por que usar uma linguagem de montagem? Acesso a todas as características do nível ISA Baixa portabilidade Acesso total ao hardware Desenvolvimento mais lento e caro Alto desempenho Uso eficiente da memória TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 5

Introdução à Linguagem de Montagem Programadores -hora Tempo de execução (u.t.) Linguagem de montagem 50 33 Linguagem de alto-nível 10 100 Primeira etapa: Código crítico: 10% 1 90 Outra partes: 90% 9 10 Total 10 100 Segunda etapa: Código crítico: 10% 1+5 30 Outra partes: 90% 9 10 Total 15 40 TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 6

Introdução à Linguagem de Montagem Formato de comandos Label: Opcode Operandos ;comentários Label: nomes simbólicos para endereços de memória Opcode: ou código de operação, especifica o que a máquina deve realizar Operandos: define onde buscar os dados a serem manipulados e onde armazenar o resultado produzido Comentários: (auto explicativo) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 7

Introdução à Linguagem de Montagem Exemplo 01: FORMULA: MOV EAX, I ;registrador EAX = I ADD EAX, J ;registrador EAX = I + J MOV N,EAX ;N = I + J I DW 3 ;reseva 4 bytes com valor inicial 3 J DW 4 ;reseva 4 bytes com valor inicial 4 N DW 0 ;reseva 4 bytes com valor inicial 0 TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 8

Introdução à Linguagem de Montagem Exemplo 02: CBLOCK 0x20 I J N ;associa I ao endereço 0x20 ;associa J ao endereço 0x21 ;associa N ao endereço 0x22 ENDC MOVLW 3 ;carrega 3 para W MOVWF I ;I=3 MOVLW 4 ;carrega 4 para W MOVWF J ;J = 4 MOVF I, W ;registrador W = I ADDWF J, W ;registrador W = I + J MOVWF N ;N = I + J TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 9

Introdução à Linguagem de Montagem Pseudo-intruções São comandos para o próprio montador. Também chamadas de diretivas do montador Exemplos: Instruções de alocação de memória para variáveis Definição de início ou fim de procedimentos (PROC/ENDP) Controle de visibilidade de símbolos (PUBLIC, EXTERN) Busca e inclusão de um novo arquivo (INCLUDE) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 10

Macros Definição, chamada e expansão de macros Definição de macro: maneira de se atribuir um nome a uma parte do código em linguagem de montagem. Após a definição: nome da macro referencia as instruções que a compõem. Macro procedimento Itens da definição: Cabeçalho: marca o início da macro e informa o seu nome Texto: instruções que fazem parte do corpo da macro Pseudo instrução: para marcação do final da macro TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 11

Macros Definição, chamada e expansão de macros Chamada da macro: uso do nome da macro como se fosse um código de operação Expansão da macro: substituição do nome da macro pelo nome da macro (ocorre durante o processo de montagem) Passos: Passo 01: são salvas todas as definições de macro e realizadas todas as expansões Passo 02: o código resultante é processado como se fosse um novo programa-fonte. TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 12

Macros Definição, chamada e expansão de macros Definição de macro (exemplo) MOV EAX, P SWAP MACRO MOV EBX, Q MOV EAX,P MOV Q, EAX MOV EBX,Q MOV P, EBX MOV Q, EAX MOV P, EBX MOV EAX, P ENDM MOV EBX, Q MOV Q, EAX SWAP MOV P, EBX SWAP TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 13

Macros Uso de macros com parâmetros Definição da macro: parâmetros formais Chamada da macro: parâmetros reais Expansão da macro: troca parâmetros formais pelos reais Características avançadas Possibilidade de definição de macros dentro de outras macros Possibilidade de macros chamarem a si mesmas (cuidado com loop infinito) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 14

Macros Uso de macros com parâmetros (exemplo) MOV EAX, P CHANGE MACRO P1,P2 MOV EBX, Q MOV EAX,P1 MOV Q, EAX MOV EBX,P2 MOV P, EBX MOV P2, EAX MOV P1, EBX MOV EAX, R ENDM MOV EBX, S MOV S, EAX CHANGE P, Q MOV R, EBX CHANGE R, S TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 15

O Processo de Montagem Montadores de dois passos Problema da referência posterior INICIO. ORG GOTO. BANK1 MOVLW.. 0x00 INICIO. B 0000000. TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 16

O Processo de Montagem Montadores de dois passos Abordagem A: Passo 01: coleta de definições de símbolos (labels, macros, etc.) Passo 02: montagem propriamente dita Abordagem B: Passo 01: conversão do programa-fonte para um formato intermediário, gerando uma tabela na memória Passo 02: montagem executada sobre a tabela (as macros são expandidas no passo 01) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 17

O Processo de Montagem O passo 01 Principal função: contruir a tabela de símbolos O endereço em tempo de execução é dado pelo ILC (instruction location counter) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 18

O Processo de Montagem O passo 01 Label Opcode Operandos Comentários Tamanho ILC MARIA: MOV EAX,I EAX=I 5 100 MOV EBX,J EBX=J 6 105 ROBERTA: MOV ECX,K ECX=K 6 111 IMUL EAX,EAX EAX=I*I 2 117 IMUL EBX,EBX EBX=J*J 3 119 IMUL ECX,ECX ECX=K*K 3 122 MARILYN: ADD EAX,EBX EAX=EAX+EBX 2 125 ADD EAX,ECX EAX=EAX+ECX 2 127 STEPHANY: JMP DONE Vai para DONE 5 129 TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 19

O Processo de Montagem O passo 01 (Tabela de símbolos) Símbolo Valor Outras informações MARIA: 100 ROBERTA: 111 MARILYN: 125 STEPHANY: 129 Além da tabela de símbolos: Tabela de pseudo-intruções Tabela de códigos de operação Tabela para literais TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 20

O Processo de Montagem O passo 02 Gerar o programa-objeto (objetivo principal) Gerar listagem do programa-fonte e informações da montagem Tornar disponíveis informações que são usadas pelo linker TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 21

Ligação e carga de procedimentos Montadores e compiladores: tradução de um procedimento por vez (resultado em disco) Para execução: formação de um único texto de código (localização e ligação) Ligação não representa mudança de nível Source procedure 1 module 1 Source procedure 2 Translator module 2 Linker Executable binary program Source procedure 3 module 3 TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 22

400 300 200 100 0 500 400 300 200 100 0 module A CALL B MOVE P TO X BRANCH TO 200 module C CALL D MOVE R TO X BRANCH TO 200 600 500 400 300 200 100 0 300 200 100 0 module B CALL C MOVE Q TO X BRANCH TO 300 module D MOVE S TO X BRANCH TO 200 Linguagem de montagem Ligação e carga de procedimentos Módulos-objeto (cada qual no seu espaço de endereçamento próprio) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 23

1900 1800 1700 1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0 MOVE S TO X BRANCH TO 200 CALL D MOVE R TO X BRANCH TO 200 CALL C MOVE Q TO X BRANCH TO 300 CALL B MOVE P TO X BRANCH TO 200 module B module A module D module C 1900 1800 1700 1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 300 200 100 0 MOVE S TO X BRANCH TO 1800 CALL 1600 MOVE R TO X BRANCH TO 1300 CALL 1100 MOVE Q TO X BRANCH TO 800 CALL 500 MOVE P TO X BRANCH TO 300 module B module A module D module C Linguagem de montagem Ligação e carga de procedimentos Módulos na memória (formação da imagem do binário executável e relocaçãco) TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 24

Ligação e carga de procedimentos Passos executados pelo ligador: construção de tabela contendo todos os módulos-objeto e seus respectivos tamanhos atribuição de um endereço inicial a cada módulo-objeto soma os endereços das instruções que fazem referência à memória inserção do endereço dos procedimentos Módulo Tamanho Endereço inicial A 400 100 B 600 500 C 500 1100 D 300 1600 TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 25

End of module Relocation dictionary Machine instructions and constants External reference table Entry point table Identification TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 26

2200 2100 2000 1900 1800 1700 1600 1500 1400 1300 1200 1100 1000 900 800 700 600 500 400 0 MOVE S TO X BRANCH TO 1800 CALL 1600 MOVE R TO X BRANCH TO 1300 CALL 1100 MOVE Q TO X BRANCH TO 800 CALL 500 MOVE P TO X BRANCH TO 300 module B module A module D module C Linguagem de montagem TE11008 Arquitetura e Organização de Computadores Nível da Linguagem de Montagem p. 27