Parte 1: Organização de Computadores

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Parte 1: Organização de Computadores
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Parte 1: Organização de Computadores
Sistemas Operacionais
Sistemas Operacionais
Organização e Arquitetura de Computadores I Linguagem de Máquina
gerador de código intermediário
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.
CPU: Controle e processamento
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
WebDesign Redes de Computadores Aula 07
Sistemas Operacionais
Arquitetura e organização de computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores
Linguagem de Montagem Visão geral.
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Arquitetura e Organização de Computadores 2
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Sistemas Operacionais
Introdução a Informática
CISC e RISC.
Modelo de Arquitetura Diagrama de Componentes
Ferramentas Programação
Arquitetura de Computadores
Arquitetura de Computadores
Linguagens de Programação
Autor: Fernando de Mesentier Silva
Arquitecturas RISC Arquitectura e Conjunto de Instruções
Revisão da Linguagem C.
Instruções: A Linguagem de Máquina – Aula 01
Processadores – Aula 3 Professor: André Luis Meneses Silva
Gerência de Memória.
PROGRAMAÇÃO I UNIDADE 1.
Linguagem de Montagem.
Representação de Instruções
Classes de Arquiteturas Tipos de operação Codificação das operações
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
Sistemas Operacionais
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Ambiente de Execução - Rotinas
Sistemas Operacionais
Geração de Código aula-12-geração-de-código.pdf.
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Capítulo VIII Ambientes de Execução
Sistemas Operacionais
Arquitetura de Computadores
Sistemas Operacionais
A Linguagem de Máquina – Desvios e Laços
A Linguagem de Máquina – Funções e recursividade Prof. André Luis M. Silva orgearq wordpress.com.
8088 Assembly Software Básico Mitsuo Takaki.
Registradores.
Arquitetura de Computadores 2009 Infra-estrutura Hardware
8 - 1 Organização Básica de Computadores e Linguagem de Montagem Ricardo Pannain ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM A pilha e subrotinas.
Infra-Estrutura de Software Gerenciamento de Memória.
Gerenciamento de Memória - Capítulo 7 - Sistemas Operacionais Prof. Dr. José Carlos Becceneri Luciana Sêda Cardoso.
Engenharia de Sistemas Embarcados Aula 4: O Ambiente de Desenvolvimento.
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
A linguagem de Máquina – Instruções Básicas
 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.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Arquitetura ARM Subrotinas.  Implementar uma sub-rotina requer dois passos: 1.Armazenar o endereço de retorno. 2.Desviar a execução para o endereço da.
Transcrição da apresentação:

Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface J.L. Hennessy e D.A. Patterson IC - UFF

MIPS: Visão do programador Alguns registradores (32 bits) $s0 - $s7: uso geral, preservados $t0 - $t9: temporários, não preservados $sp: apontador de pilha, preservado $ra: endereço de retorno, preservado $a0 - $a3: argumentos, não preservados $v0 - $v1: valores de retorno, não preservados IC - UFF

Algumas instruções IC - UFF

Formato das instruções IC - UFF

Um pequeno segmento em C Variáveis a  e colocadas nos registradores $s1  $s5 pelo compilador IC - UFF

Um pequeno segmento em C Variáveis a  e colocadas nos registradores $s1  $s5 pelo compilador IC - UFF

Um pouco mais de complexidade Variáveis f  j em $s0  $s4 IC - UFF

Um pouco mais de complexidade Variáveis f  j em $s0  $s4 IC - UFF

Um operando em memória A é um array de 100 posições; g e h estão em $s1 e $s2; endereço de base de A está em $s3 IC - UFF

Um operando em memória A é um array de 100 posições; g e h estão em $s1 e $s2; endereço de base de A está em $s3 ? IC - UFF

Ainda outro array A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3 IC - UFF

Ainda outro array A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3 IC - UFF

Array com índice variável A é um array de 100 posições; g, h e i estão em $s1, $s2 e $s4; endereço de base de A está em $s3 IC - UFF

Array com índice variável A é um array de 100 posições; g, h e i estão em $s1, $s2 e $s4; endereço de base de A está em $s3 IC - UFF

Outras instruções IC - UFF

Tomando decisões i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2 IC - UFF

Tomando decisões i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2 IC - UFF

Loop e índice variável A é um array de 100 posições; g, h, i e j estão em $s1, $s2, $s3 e $s4; endereço de base de A está em $s5. Ex: IC - UFF

Código do exemplo do Loop IC - UFF

Evitando o go to: while save é um array; i, j e k estão em $s3, $s4 e $s5; base de save está em $s6. Ex: IC - UFF

Código do exemplo com while IC - UFF

Mais algumas instruções IC - UFF

E o switch? Variáveis f a k estão de $s0 a $s5; $t2 contém 4; $zero = 0 IC - UFF

Código para o switch IC - UFF

Utilizando procedures Alocação de registros para passagem de parametros e valores $a0 - $a3: passagem de argumentos $v0 - $v1: retorno de valores $ra: endereço de retorno nova instrução: jal ProcedureAddress (salva endereço da próxima instrução em $ra) mais parametros/valores: uso da pilha IC - UFF

Procedures: um caso simples IC - UFF

Código MIPS: proc_simples IC - UFF

Recursividade Cálculo de fatorial IC - UFF

Código MIPS: fatorial IC - UFF

Arrays x ponteiros IC - UFF

Código clear1 e clear2 IC - UFF

Um pouco mais rápido ... IC - UFF

Pseudo-instruções A linguagem de montagem pode ter instruções que não sejam implementadas em hardware: pseudo-instruções Exemplo: move $t0, $t1 # $t0  $t1 ( a MIPS!) add $t0, $zero, $t1 # equivalente ao move IC - UFF

Transformando *.c em *.exe programa C programa fonte IC - UFF

Transformando *.c em *.exe programa C compilador programa assembly IC - UFF

Transformando *.c em *.exe programa C compilador programa assembly linguagem de máquina! montador módulo objeto IC - UFF

Transformando *.c em *.exe programa C compilador programa assembly linguagem de máquina! montador módulo objeto routina de biblioteca IC - UFF

Transformando *.c em *.exe programa C compilador podemos ter vários módulos objeto e várias rotinas de biblioteca programa assembly montador módulo objeto routina de biblioteca IC - UFF

Transformando *.c em *.exe programa C linguagem de máquina! compilador programa assembly módulo executável montador ligador módulo objeto routina de biblioteca IC - UFF

Transformando *.c em *.exe programa C compilador programa assembly montador módulo objeto ligador routina de biblioteca módulo executável carregador memória IC - UFF

Olhando cada fase . . . Identificação dos arquivos: Compilação Unix: arq.c, arq.s, arq.o, a.out MS-DOS: arq.c, arq.asm, arq.obj, arq.exe Compilação código objeto pode ser produzido diretamente fases IC - UFF

Montagem Transforma um programa em linguagem de montagem em um programa objeto: instruções de máquina, dados e informações para colocação das instruções em memória Tabela de símbolos: associação entre rótulos e seus endereços IC - UFF

Arquivo objeto (e.g., Unix) Cabeçalho: tamanho e posição dos componentes do arquivo objeto Segmento de texto: código de máquina Segmento de dados: dados estáticos e dinâmicos Inf. de relocação: identifica instruções e palavras de dados que dependem de endereços absolutos quando programa é carregado IC - UFF

Arquivo objeto (cont.) Tabela de símbolos: símbolos que não foram resolvidos (referências externas) Informação para depuração: possibilita associação entre instruções em C e instruções de máquina; facilita a leitura de estruturas de dados IC - UFF

Um arquivo objeto IC - UFF

Ligação Compilação separada: necessidade do ligador Ligador pega um programa objeto e produz um módulo carregável Ligação dinâmica em tempo de carregamento: incorporação de novas versões; compartilhamento de código Ligação dinâmica em tempo de execução: só aloca memória p/ o que for usado; instalação de módulos não existentes quando da programação da aplicação IC - UFF

Carregamento Definição de endereçamento: carregamento absoluto limitado: problema com modificações carregamento relocável problema: memória virtual (swapping) carregamento dinâmico em tempo de execução IC - UFF

Um programa na memória IC - UFF

Leitura suplementar Apêndice A, itens A1 até A6, Computer Organization and Design: The Hardware/Software Interface, J.L. Hennessy e D.A. Patterson Apêndice 7A, Operating Systems: Internals and Design Principles, W. Stallings IC - UFF