Y86: Definição da Arquitectura

Slides:



Advertisements
Apresentações semelhantes
Parte 1: Organização de Computadores
Advertisements

Software Básico Silvio Fernandes Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 05:
Arquitetura de Computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Organização de computadores Professora Marcela Santos Aula 8 – Conjunto de instruções.
Arquitetura de Computadores
SOFTWARE BÁSICO.
A Arquitetura: conjunto de instruções
Aula 5 – Sumário Revisão da aula anterior Endereçamento indirecto
O Conjunto de Instruções
Assembly MAC-1 Implementação de ciclos Ciclo ‘while’ // Em Java : ...
1 O Conjunto de Instruções ISA – Instruction Set Architecture.
Programação MAC-1 Exemplo: copiar vector
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
Sistemas Embarcados Microcontroladores PIC
Arquitetura dos Microprocessadores 8086 e 8088 Sistemas Embarcados.
Arquitetura dos Microprocessadores 8086 e 8088
Sistemas Operacionais
Introdução à Informática
O MICROPROCESSADOR INTEL 8080
REPRESENTAÇÃO DE INSTRUÇÕES
Organização da Memória Principal
Implementação da CPU Análise de um computador simplificado Implementação da Unidade de Controle para o computador simplificado.
Autor: Fernando de Mesentier Silva
Nível Máquina Formatos de Instruções
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número.
Arquitecturas RISC Arquitectura e Conjunto de Instruções
Programação em Assembly Procedimentos e funções
Arquitecturas RISC Programação em assembly
Programação em assembly
Y86: Datapath Sequencial
Processamento Vectorial: Single Instruction Multiple Data
Y86: Encadeamento de Instruções (PIPE-)
Optimização do Desempenho: Técnicas Dependentes da Máquina
Y86: Encadeamento de Instruções (PIPE)
Funcionamento básico de um computador
Linguagem de Montagem.
AJProença, Sistemas de Computação, UMinho, 2013/141 Análise do código de gestão de uma função –invocação e regresso instrução de salto, mas com salvaguarda.
Comparação Processadores Hardwired x Microcoded
Linguagem de Montagem PROVA 4 – 3/12.
ORGANIZAÇÃO DE COMPUTADORES
Arquitetura de computadores
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda Modos de Endereçamento.
Processamento de dados na UCP e memória UCP
Unidade Central De Processamento: Processador
8088 Assembly Software Básico Mitsuo Takaki.
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.
Procedimentos Registro de Ativação e Variáveis Locais 11 1.
Parte 3 Seção de Dados e Unidade de Controle
Ciro Ceissler / ASSEMBLY Ciro Ceissler /
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
Aula 4 – Sumário Linguagem assembly do MAC-1: Funções e procedimentos
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos.
Lucas Aranha ASSEMBLY Lucas Aranha
Processador MAC-1 Arquitectura.
Introdução à Computação Componentes Básicos dos Computadores
Existem 8 registos principais de 32 bits no processador (existem mais como %EIP): %EAX %EBX %ECX %EDX %ESI %EDI %EBP %ESP Os registos são armazenados em.
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
A linguagem de Máquina – Instruções Básicas
Arquitetura do ARM RISC (Reduced Instruction Set Computer) – Conjunto relativamente grande de registradores – Modelo “load/store “de processamento Operações.
Modos de Endereçamento da família MC8051
Transcrição da apresentação:

Y86: Definição da Arquitectura Arquitectura de Computadores Lic. em Engenharia Informática Luís Paulo Santos

Y86: Arquitectura Conteúdos 9 – Organização do Processador 9.1 – Conceitos Fundamentais Resultados de Aprendizagem R9.1 – Analisar e descrever organizações sequenciais de processadores elementares AC – Y86: Definição da Arquitectura

Y86: Estado visível Registos Códigos de Condição Program Counter %eax %ecx %edx %ebx %esi %edi %esp %ebp Registos Códigos de Condição PC Memória OF ZF SF Registos Os mesmos que o IA32. Cada 32 bits Códigos de Condição Flags de 1 bit alteradas pelas instruções aritméticas ou lógicas OF: Transporte ZF: Zero SF:Sinal Program Counter Indica endereço da instrução a executar Memória Vector de bytes Palavras armazenadas em ordem little-endian AC – Y86: Definição da Arquitectura

Y86 : Instruction Set Architecture (ISA) popl AC – Y86: Definição da Arquitectura

Y86 : Instruction Set Architecture (ISA) Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 op fn rA rB Imm op – código de operação : identifica a instrução fn – função: identifica a operação rA, rB – indicam quais os registos a utilizar Imm – valor imediato (constante) Algumas instruções não necessitam de todos os campos: apenas op e fn estão sempre presentes pois identificam a instrução %eax %ecx %edx %ebx 1 2 3 %esi %edi %esp %ebp 6 7 4 5 AC – Y86: Definição da Arquitectura

Y86: Modos de endereçamento Imediato: constante especificada na própria instrução no campo Imm Registo: registo(s) a utilizar especificados na instrução nos campos rA, rB Base+Deslocamento: Endereço da posição de memória a ler/escrever especificado como a soma do valor imediato (Imm) com o conteúdo do registo (rB) AC – Y86: Definição da Arquitectura

Y86 : Exemplo de Instrução Adição Adicionar valor no registo rA ao valor no registo rB Guardar resultado no registo rB Operações Aritméticas ou Lógicas só sobre operandos em registos Códigos de condição dependem do resultado e.g., addl %eax,%esi Representação Máquina: 60 06 Forma Genérica Representação Codificada addl rA, rB 6 rA rB AC – Y86: Definição da Arquitectura

Y86: Operações Lógicas e Aritméticas Instruction Code Function Code Referidas genericamente como “OPl” Códigos variam apenas no “function code” 4 bits menos significativos do 1º byte Altera os códigos de condição Adição addl rA, rB 6 rA rB Subtracção (rA de rB) subl rA, rB 6 1 rA rB And andl rA, rB 6 2 rA rB Exclusive-Or xorl rA, rB 6 3 rA rB AC – Y86: Definição da Arquitectura

Y86: Transferência de Dados Registo --> Registo rrmovl rA, rB 2 rA rB Imediato --> Registo irmovl V, rB 3 8 rB V Registo --> Memória rmmovl rA, D(rB) 4 rA rB D Memória --> Registo mrmovl D(rB), rA 5 rA rB D Semelhante à instrução IA32 movl Modo de endereçamento mais simples: Registo+Deslocamento AC – Y86: Definição da Arquitectura

Y86: Transferência de Dados (exemplos) Encoding movl $0xabcd, %edx irmovl $0xabcd, %edx 30 82 cd ab 00 00 movl %esp, %ebx rrmovl %esp, %ebx 20 43 movl -12(%ebp),%ecx mrmovl -12(%ebp),%ecx 50 15 f4 ff ff ff movl %esi,0x41c(%esp) rmmovl %esi,0x41c(%esp) 40 64 1c 04 00 00 movl $0xabcd, (%eax) — movl %eax, 12(%eax,%edx) — movl (%ebp,%eax,4),%ecx — AC – Y86: Definição da Arquitectura

Y86: Controlo de Fluxo (saltos) jmp Dest 7 Jump Unconditionally Dest Referidas genericamente como “jXX” Códigos variam apenas no “function code” Decisão baseada nos valores dos códigos de condição Endereçamento absoluto jle Dest 7 1 Jump When Less or Equal Dest jl Dest 7 2 Jump When Less Dest je Dest 7 3 Jump When Equal Dest jne Dest 7 4 Jump When Not Equal Dest jge Dest 7 5 Jump When Greater or Equal Dest jg Dest 7 6 Jump When Greater Dest AC – Y86: Definição da Arquitectura

Y86: Pilha Região da memória com dados do programa Topo da pilha Região da memória com dados do programa Usada no Y86 (e IA32) para suportar invocação de procedimentos Topo da pilha : %esp Pilha cresce para endereços menores Topo no endereço menor Push – primeiro subtrair 4 ao %esp Pop – adicionar 4 ao %esp após leitura %esp • Endereços Maiores Cauda da pilha AC – Y86: Definição da Arquitectura

Y86: Transferência de Dados (pilha) pushl rA a rA 8 Decrementar %esp por 4 Armazenar palavra de rA na memória apontada por %esp Ler palavra da memória apontada por %esp Guardar em rA Incrementar %esp por 4 popl rA b rA 8 AC – Y86: Definição da Arquitectura

Y86: Procedimentos Endereço da próxima instrução para a pilha (push) call Dest 8 Dest Endereço da próxima instrução para a pilha (push) Iniciar execução a partir do endereço Dest (escrita no PC) Ler valor do topo da pilha (pop) Iniciar execução a partir deste endereço (escrita no PC) ret 9 AC – Y86: Definição da Arquitectura

Y86: Instruções Adicionais nop No Operation: não altera o estado, excepto para o PC Pára a execução de instruções IA32 tem uma instrução semelhante, mas não pode ser executada em modo utilizador halt 1 AC – Y86: Definição da Arquitectura

Y86: Estrutura dos Programas .pos 0 irmovl Stack, %esp # inicializa pilha jmp main   .align 4 # dados alinhados em múltiplos de 4 t: .long 10 # reserva 4 bytes para um inteiro t com o valor inicial 10 main: … # instruções halt .pos 0x100 # stack a começar no addr 0x100 (256 em decimal) Stack: Programas começam no endereço 0 Tem que se inicializar a pilha Não sobrepor ao código! Inicializar dados AC – Y86: Definição da Arquitectura

Y86: Assembler Gera “código objecto” ficheiro ASCII eg.yo unix> yas eg.ys Gera “código objecto” ficheiro ASCII eg.yo Idêntico ao output de um disassembler 0x000: 308400010000 | irmovl Stack,%esp # Set up stack 0x006: 2045 | rrmovl %esp,%ebp # Set up frame 0x008: 308218000000 | irmovl List,%edx 0x00e: a028 | pushl %edx # Push argument 0x010: 8028000000 | call len2 # Call Function 0x015: 10 | halt # Halt 0x018: | .align 4 0x018: | List: # List of elements 0x018: b3130000 | .long 5043 0x01c: ed170000 | .long 6125 0x020: e31c0000 | .long 7395 0x024: 00000000 | .long 0 AC – Y86: Definição da Arquitectura