arquitetura de computadores i - pucrsemoreno/undergraduate/ec/arqi/class_files… · fluxo da...

30
Arquitetura de Computadores I Montadores, Ligadores e Carregadores Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno

Upload: others

Post on 15-Nov-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Arquitetura de Computadores I

Montadores, Ligadores e Carregadores

Edson Moreno

[email protected]

http://www.inf.pucrs.br/~emoreno

Page 2: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Visão geral

Fluxo da construção até a execução de um programa

Compiladores

Responsável pela tradução de um programa descrito em linguagem de

alto nível para

Montadores (assembler)

Responsáveis pela tradução do programa escrito em linguagem assembly

Resultado é um programa em linguagem de máquina

Ligadores (linker / Link-editor)

Responsável por unir diferentes partes de um programa

Permite modularizar o desenvolvimento de um programa

Carregadores (loader)

Responsável pela transferência de um programa para a MP

Page 3: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Proposta de uso dos mecanismos

Arquitetura

Montador e Carregador integrados

Código Fonte

Montador

/

Carregador

Memória

Page 4: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Proposta de uso dos mecanismos

Arquitetura

Montador e Carregador independentes

Código Fonte Montador

ExecutávelCarregador

(SO)

Memória

Page 5: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Proposta de uso dos mecanismos

Arquitetura

Montador, Ligador e Carregador independentes

Módulo A

Montador

Ligador

Executável

Módulo B Módulo Z

MontadorMontador

Objeto A Objeto B Objeto C

MemóriaCarregador

SO

Page 6: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Máquina hipotética

Arquitetura

Acumulador (16bits)

PC (16 bits)

Memória de 216 palavras de 16bits

3 formatos de instrução

Page 7: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Conjunto de instruções

Page 8: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Montador (Assembler)

Função

Traduzir programas escritos em linguagem de montagem

(assembly) para linguagem de máquina

Page 9: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Conceitos básicos

Sintaxe típica de programas de montagem

[rótulo] [operação] [operando1] [, operando2] ; comentário

Rótulo

Marcador empregado para definir um endereço da área de código

Operação

Opcodes simbólicos: mnemônico que representa uma instrução

Pseudo instrução: Operação que orienta a atuação do montador

Operandos

Registradores, constantes ou endereços de memória

Page 10: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Montador

Função básica

Substituir Opcodes / mnemônicos por instruções opcodes numéricos

Segue uma tabela de associações

Relaciona o mnemonico com a instrução alvo

Substituir endereços simbólicos por endereços numéricos

Jumps / branches (endereço absoluto ou deslocamento relativo ao pc)

Constantes (valor associado ao ponto do código)

Reserva espaço para dados

De acordo com o tipo associado a cada variável

Geram constantes em memória

Variáveis e constantes (valor associado ao modo de endereçamento do operando)

Page 11: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Algoritmos

Duas passagens

Realiza duas passagens no arquivo fonte

Primeira passagem

Reconhece símbolos definidos pelo programador

o Constrói tabela com símbolos e seus respectivos valores

Segunda passagem

Geração do código objeto

Estrutura de dados empregada

Tabela de instruções

Tabela de diretivas

Tabela de símbolos

Contador de posições

Page 12: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Primeira passagem

Page 13: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Segunda passagem

Page 14: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Ligadores (Linker)

Função

Juntar diferentes arquivos objeto

Gerar um arquivo executável a partir dos objetos

Para isto, deve:

Resolver referências cruzadas

Page 15: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Processo de montagem

Características

Módulos montados de forma independente

Podem ser bibliotecas de funções

Podem fazer uso de funções cujo código não é conhecido

Referência cruzada / não resolvida

Símbolos não conhecidos dentro de um módulo

Montador deve informar este tipo de situação

Cria tabela de uso

Situações devem ser tratadas posteriormente

Page 16: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Tabela de uso

Inserida pelo montador no código objeto gerado

Indica

Símbolos externos que foram utilizados pelo módulo

Onde foram referenciados

Ligador

Utiliza informações para correções necessárias

Deve conhecer o formato do arquivo objeto

Page 17: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Problema

Uma referência não resolvida é um erro?

Para o algoritmo básico do montador sim

Mas pode não ser...

O que fazer?

Considerar todas as referências não resolvidas

Desvantagem é que um erro de montagem somente é detectado na ligação

Incluir diretivas de montagem

Obrigam o programador a declarar explicitamente o que está fazendo o

símbolo

Page 18: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Diretivas

EXTERN

Programador informa quais referências pertencem a outro módulo

Diferencia “símbolo não conhecido” de “símbolo não definido”

Símbolos declarados como EXTERN vão para tabela de uso

Localidade dos símbolos

Locais – Símbolo local ao módulo em que foi definido

Global – Quando definido em um módulo e empregado em outro

Obrigatória sinalização com uma diretiva

o Nesta arquitetura hipotética, utiliza-se a diretiva PUBLIC

o No MARS, emprega-se .GLOBL

Page 19: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Diretivas

PUBLIC

Programador informa símbolos a serem exportados

Símbolo definido localmente mas com escopo global

Resultado é uma tabela de definições

Subconjunto da tabela de símbolos

Incluída no arquivo objeto

Page 20: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Novo algoritmo

Alteração do algoritmo básico

Tabela de símbolos

Deve conter a informação se um símbolo é local ou global

Tratamento de diretivas

Primeira passagem

Insere símbolo na tabela de uso (EXTERN)

Segunda passagem

Insere símbolo na tabela de definições (PUBLIC)

Arquivo objeto

Devem conter informações das tabelas de símbolo e de definições

Tratamento de erro

Redefinição de símbolos (locais e globais devem ter nomes distintos)

Símbolos exportados mas não definidos

Símbolo externo foi exportado

Page 21: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Geração dos módulos

Page 22: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Módulo A

Page 23: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Módulo B

Page 24: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Exemplo MARS

#MAIN.ASM

.text

main:

li $v0 ,5

syscall

sw $v0, valor($zero)

jal print_value

li $v0,10

syscall

.data

.globl valor

valor: .word 1

#FUNC.ASM

.text

.globl print_value

print_value:

lw $a0, valor($zero)

li $v0, 1

syscall

jr $ra

.data

.extern valor 4

Configuração necessária:

1. Salve os arquivos no mesmo diretório

2. Habilite a opção Settings >> Assembly all file in directory

Page 25: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Ligadores

Ligação pode ser realizada de forma

Estática

Realiza duas passagens

Primeira passagem

o Recolhe informações das tabelas de definição

Segunda passagem

o Copia código objeto para executável

o Consulta tabela de uso e resolve referências

Em tempo de carga

Referência a um módulo externo faz com que o carregador

Busque módulo faltante e realize a ligação

Em tempo de execução

Exemplo de emprego deDLLs

Page 26: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Carregador (Loader)

Função

Responsável por copiar um programa para a MP e preparar sua

execução

Tarefas principais

Verificar se o programa existe

Dimensionar a quantidade de memória necessária

Solicitar ao SO a quantidade de memória necessária

Copiar o código para a memória

Ajustar os endereços do código executável

Page 27: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Carregador

Tipicamente integrado com o SO

Tipos de carregadores

Absoluto

Relocador

Dinâmico

Page 28: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Carregador Absoluto

Considera que programa é carregado sempre no mesmo

endereço

Referências específicas a um endereço

Referências definidas em tempo de projeto

Pelo programador ou pelo compilador / montador

Referências criadas pelo programador

Programador deve conhecer a plataforma

Inclusão/alteração de instruções implica em redefinição de endereços

Referências criadas pelo compilador / montador

Emprega símbolos para representar as referências

Page 29: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Carregador Relocador

Programa carregado de forma absoluta impõe restrições

Solução:

Trabalhar com endereços relativos a ponto conhecido

E.g. início do programa

Carga do programa na posição X da memória

Implica em adicionar X a cada uma das referências do programa

Page 30: Arquitetura de Computadores I - PUCRSemoreno/undergraduate/EC/arqi/class_files… · Fluxo da construção até a execução de um programa ... Arquitetura Acumulador (16bits) PC

Carregador Dinâmico

Problema do emprego de carregador relocador

Não adequado para situações de swapping

Translado de processos entre MP e disco pode maximizar o uso do

processador

Processos não necessariamente retornam a mesma posição de memória

anterior

Solução

Executar relocação no momento em que a posição for referenciada

Endereços devem ser relativos ao início do módulo na memória

Usa registrador específico (registrador de base)