A linguagem de Máquina – Instruções Básicas

Slides:



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

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
Laboratório de programação III Linguagem C
Arquitetura e organização de computadores.
Unidade Lógica e Aritmética Introdução à Ciência da Computação
Arquitetura dos Microprocessadores 8086 e 8088
Exemplo de arquitetura registrador-registrador- MIPS
Introdução à Informática
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Autor: Fernando de Mesentier Silva
Instruções: A Linguagem de Máquina – Aula 01
Arquitetura de Computadores
Processadores – Aula 3 Professor: André Luis Meneses Silva
Fundamentos do Projeto Lógico
Arquitetura de Computadores
Processadores – Aula 3 Professor: André Luis Meneses Silva
2- Entendendo o que é Arquitetura e Organização
Introdução à Programação
PROGRAMAÇÃO I UNIDADE 1.
Fundamentos da Arquitetura de Computadores
Funcionamento básico de um computador
Representação de Instruções
Organização de Computadores
ORGANIZAÇÃO DE COMPUTADORES
Sistemas Operacionais I
Arquitetura 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.
Pet computação UFPE Aula de apoio aos feras: Arquitetura de Computadores.
Processamento de dados na UCP e memória UCP
Arquitetura de Computadores
Unidade Central De Processamento: Processador
Geração de Código aula-12-geração-de-código.pdf.
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Fundamentos de Arquitetura da Computação
Organização e Arquitetura de Computadores
Unidade de Controle.
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.
Microprocesadores x Microcontroladores
Componentes de um Sistema de Computação
DSC/CEEI/UFCG Introdução à Computação. DSC/CEEI/UFCG 2 Hardware – Memória  Componente de um sistema de computação cuja função é armazenar informações.
Arquitetura de Computadores 2009 Infra-estrutura Hardware
Nível ISA.
Linguagem C.
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.
Introdução à Computação Componentes Básicos dos Computadores
Arquitetura de Computadores
Afonso Ferreira Miguel
Funcionamento interno do computador
Arquitetura de computadores
Arquitetura de Sistemas Operacionais
ARQUITETURA DE COMPUTADORES Nível do Conjunto de Instruções
ARQUITETURA DE VON NEUMANN
Nível ISA.
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Processamento de dados: requer a execução de uma série de passos, o programa (software)  Cada passo é uma instrução, ou ordem de comando, dada ao.
 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.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

A linguagem de Máquina – Instruções Básicas Prof. André Luis M. Silva andreluis.ms@gmail.com orgearq200101.wordpress.com

Introdução Com o assunto de hoje, começaremos a entender as seguintes questões Como controlar o hardware? Qual a diferença entre um hardware específico e um de propósito geral? Como deixar o hardware flexível?

Introdução Com o assunto de hoje, começaremos a entender as seguintes questões Como controlar o hardware? Através de instruções. Qual a diferença entre um hardware específico e um de propósito geral? Flexibilidade, forma de programação Como deixar o hardware flexível? Dando o suporte a um conjunto de instruções.

O processador MIPS As palavras da linguagem de um computador são chamadas de instruções e seu vocabulário é denominado de conjunto de instruções. Embora o conjunto de instruções seja uma característica associada a arquitetura, em geral, o conjunto de instruções de diferentes arquiteturas são bastante similares. Isso acontece devido: Aos projetos possuírem princípios básicos semelhantes Algumas operações básicas devem ser oferecidas por todos os computadores.

O processador MIPS Hoje e nas próximas aulas veremos o conjunto de instruções do processador MIPS. Um pouco sobre o MIPS: Criado na década de 80 por John L. Hennessy. Microprocessador bastante utilizado. Em 2002, foram fabricados 100 milhões de unidades. Encontrados em produtos de várias empresas. ATI, Broadcom, Cisco, NEC, Nintendo, Silicon Graphics, Sony, Texas Instrument, Toshiba, etc.

O Processador Mips Elementos Básicos Entrada Memória Cache Unidade de Controle Registradores Saída

O processador MIPS Algumas Características Instruções simples, sempre realizam uma única operação. Tamanho fixo de 32 bits. Possui 32 registradores. Cada um deles de 32 bits. Tamanho da palavra MIPS Em geral, instruções MIPS trabalham com 3 operandos. Esta característica torna o hardware mais simples.

O Processador MIPS Princípios fundamentais de projeto MIPS: “Simplicidade favorece a regularidade” “Menor significa mais rápido” “Agilize os casos mais comuns” “Um bom projeto exige bons compromissos”.

Instruções para soma e subtração add e sub. Exemplos: add a, b, c # A soma de b + c é colocada em a. sub a, b, c # A subtração de b - c é colocada em a. Como são compiladas as seguintes instruções java? a = b + c; d = a - e;

Instruções para soma e subtração add a, b, c sub d, a, e E essa atribuição? f = (g + h) – (i + j);

Instruções para soma e subtração add a, b, c sub d, a, e E essa atribuição? f = (g + h) – (i + j); Mais de uma instrução Quem recebe o valor de (g+h) e (i+j)? Observem que alguns valores não serão armazenados em nenhuma variável. É o caso de (g+h) e (i+j). Operações intermediárias devem ser armazenadas em variáveis temporárias.

Instruções para soma e subtração f = (g + h) – (i + j); Assembly final: add t0, g, h add t1, i, j sub f, t0, t1

Registradores no MIPS Operandos do hardware de um computador Operandos (variáveis) de uma instrução aritmética são os registradores. Temos quantos registradores? Qual o motivo para termos uma quantidade tão pequena de registradores? 32.

Registradores no MIPS Além de fatores ligados ao consumo de energia, complexidade do hardware e preço final do produto, também temos um outro fator: “Menor significa mais rápido” Uma quantidade muito grande de registradores pode piorar o desempenho, simplesmente porque os sinais eletrônicos levam mais tempo quando precisam atravessar uma distância maior. Cuidado. Em alguns casos ter mais registradores promove um melhor desempenho. Devemos sempre pesar o limite deste número de registradores (preço/desempenho).

Registradores no MIPS Padrão de nomes de registradores: Utilizamos “$” seguido por dois caracteres para representar um registrador. $s0, $s1, $s2,... representam os registradores salvos (armazenam variáveis) $t0, $t1, ... Representam os registradores temporários (operações intermediárias)

Registradores no MIPS f = (g + h) – (i + j); add t0, g, h add t1, i, j Assembly add t0, g, h add t1, i, j sub f, t0, t1 add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1

Instrução para soma com constantes addi (Adição Imediata). Realiza soma com um valor constante. Sintaxe: addi $r1, $r2, const Efeito: $r1 := $r2 + const; Segue o princípio de projeto: “Agilize os casos mais comuns” Realmente ele é um caso comum. Onde? Lembrem-se que grande parte dos laços fazem uso desta instrução.

Registradores no MIPS Pergunta: O processador MIPS possui apenas 32 registradores. Como fazemos para trabalhar com variáveis complexas, cuja quantidade de registradores do MIPS é insuficiente para armazená-las?

Instruções para transferência de dados Utilizando a memória principal. Para realizarmos a transferência de um word (palavra) da memória para um registrador, utilizamos a instrução lw (load word). Sintaxe: lw $r1, const($r2), $r1 é o registrador que armazena o conteúdo da memória. const representa um valor constante que é somado ao endereço presente no registrador $r2.

Instruções para transferência de dados A memória principal Cada endereço da memória externa representam células de 8 bits (1 byte). A instrução lw carrega uma palavra da memória principal. Logo, se dermos um lw no endereço 0, receberemos os dados do endereço 0, 1, 2 e 3.

Instruções para transferência de dados A instrução que desempenha função inversa ao load word (lw) é a instrução store word (sw). Basicamente ela transfere o conteúdo de um registrador para um endereço específico da memória principal. Sintaxe: Similar ao do lw. sw $r1, const($r2)

Instruções para transferência de dados Qual código assembly para o seguinte trecho de código. g = h + A[3]; Considere: A um array de inteiros. Endereço de A em $s3 Endereço de h em $s2 lw $t0,12($s3); add $s1,$2,$t0; Porque 12? Porque cada posição do array ocupa 1 palavra (4 bytes ou 32 bits). Lembrem-se que cada endereço sinaliza para uma célula de 1 byte apenas. Logo, para acessarmos o inteiro na posição 3, temos de pular os 3 inteiros que aparecem antes no array, assim temos: 4 * 3 = 16

Instruções para transferência de dados Exemplo: Considere A um array de inteiros Endereço de A em $s3 Valor de h em $s2 A[12] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48, $s3;

Atividade 1 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1 e C em $s2. Converta para assembly. for (int i:= 0; i < 3; i++) C[i] := A[i] + B[i];

Atividade 2 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] - i;

Endianness Grande parte dos processadores fazem restrição com relação ao endereço em que começam suas palavras. No Mips, por exemplo, suas palavras precisam começar em endereços que sejam múltiplos de 4. Esse requisito é denominado restrição de alinhamento. Com relação ao byte de endereçamento, os processadores podem ser big endian ou little endian.

Endianness Processadores Big-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à esquerda.

Endianness Processadores Little-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à direita.

Instruções para operações lógicas

Instruções para operações lógicas Sintaxe de uso dos operadores de deslocamento (sll, slr). sll $t2, $s0, 4; # reg $t2 = $s0 << 4 bits. Para $s0 = 9, teríamos $t2 = 144;

Instruções para operações lógicas and, nor e or, possuem sintaxe similar ao add. and $t0, $t1, $t2 Funcionamento: $t0 = $t1 & $t2; Mips não possui uma instrução not. Tem como eu obter esta instrução a partir de uma das instruções acima?

Instruções para operações lógicas Utilizando nor com 0. Exemplo: 1001

Atividade 3 Seja o array A formado por inteiros de 32 bits, com os seguintes valores: A = { 2048, 1, 57888, 23, 12} Mostre como o mesmo estaria representado em memória caso seja utilizado Little Endian e Big Endian.

Atividade 4 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] * 4;

Atividade 5 Considere A, B, C arrays de inteiros. Sendo A em $s0, B em $s1. Converta para assembly. for (int i:= 0; i < 3; i++) B[i] := A[i] / 8;

Estudar. Organização e Projeto de Computadores: Interface Hw/Sw Seções 2.1 até 2.5