SlideShare a Scribd company logo
1 of 62
Download to read offline
Arquitetura de
Computadores –
Conjunto de
Instruções
Prof.ª Ms. Elaine Cecília Gatto
Disciplina: Arquitetura de Computadores
Curso: Engenharia de Computação
Semestre/Ano: 1/2012                      1
Introdução
• O hardware funciona através de ordens simples e básicas;
• O hardware não é capaz de manipular diretamente ordens
  mais complexas;
• Instrução de máquina: ordens que são transmitidas ao
  hardware para serem interpretadas e executadas por um
  conjunto de bits. Especifica para o hardware que determinada
  operação deve ser realizada.
• Set Instruction ou Conjunto de Instruções: grupo de
  instruções de máquina. Define o que um processador é capaz
  de realizar, permitindo ao programador do compilador
  escrever o código de acordo.
   • Quais operações o processador poderá realizar?              2
   • Como cada operação será realizada?
Introdução
• ISA: instruction set architecture ou arquitetura do conjunto de
  instruções. É a interface entre o hardware e o software (e os
  compiladores),
• Computadores de uso geral: possui um conjunto básico de
  instruções primitivas. Um programador pode combinar essas
  instruções de diferentes modos, obtendo diferentes resultados;
• O computador, como conhecemos hoje, é capaz de executar
  diversos tipos diferentes de programas. Exemplo: Notepad e
  AutoCAD;
• A “inteligência” e a versatilidade do sistema computacional estão na
  combinação das instruções primitivas visto que o hardware é
  imutável.
• Computadores devem ser capazes de executar programas em
                                                                         3
  diversas linguagens.
Introdução
• Quando uma máquina nova é desenvolvida, surgem as
  seguintes perguntas:

  • A nova máquina é compatível com a antecessora?
  • A nova máquina pode executar meu sistema operacional?
  • A nova máquina executará todos os meus programas de
    aplicação existentes sem modificação?

• Ninguém quer jogar fora seus programas antigos e começar
  do zero novamente!
• Isto faz parte do projeto do ISA.
• DESAFIO: construir máquinas melhores sujeitas às limitações
  da compatibilidade.                                           4
Operações Primitivas Mais
Comuns
• Transferencia de uma palavra de dados de uma célula para
  outra;
• Somar dois operandos, guardando o resultado em um deles
  ou em um terceiro operando;
• Desviar para outro endereço fora da sequencia;
• Testar uma condição. Se o teste resultar em verdadeiro, desvia
  para outro endereço;
• Realizar operação lógica AND entre dois valores;
• Parar a execução de um programa;
• Adicionar 1 a um valor de operando;
• Transferencia de byte da porta de E/S para a MP e vice-versa;
                                                                   5
• Substituição do operando por seu valor absoluto.
Projeto do conjunto de
instruções
• Quais são os elemetos requeridos para a execução de uma
  operação?
• Qual o formato binário da instrução de máquina?
• Quais tipos de dados serão manipulados?
• No projeto então é definido:
  • Quais operações o processador realizará;
  • Como as operações são identificadas;
  • Como as operações são executadas: necessário especificar a
    sequencia de microoperações que de fato realizarão a tarefa;

• Formato básico de uma instrução:
                                                                   6
     Código de operção   Campo do Operando ou Operandos
Projeto do conjunto de
instruções
• Código de Operação – C. Op.: indica ao processador o que
  fazer e como fazer – Operation Code ou OpCode. Este código é
  único para cada operação.

• Operando – Op.: indica ao processador qual dado ou dados a
  operação se realizará, ou seja, o endereço do dado. Pode
  haver instruções com mais de um campo operando e este
  campo também pode indicar o próprio valor do dado.

• Ambos os campos são formados por uma quantidade de bits;
• Formato de instruções, largura dos campos e conteúdo variam
  de acordo com a arquitetura;                                   7
Projeto do conjunto de
instruções
• Exemplos:


    Instrução de 3 operandos com memória
 C.Op.   Op.1    Op.2           Op.3
  ADD    Op.1    Op.2           Op.3


   Instrução de 2 operandos com memória
    C.Op.           Op.1            Op.2
     MOV            Op.1            Op.2

   Instrução de 2 operandos com registrador
                                              8
    C.Op.           Op.1            Op.2
     ADD                R           Op.2
OpCode
• Indica qual é a operação a ser executada;
• É o nome da instrução propriamente dita;
• Sinaliza para a unidade de controle o procedimento a ser
  seguido para execuação da operação;
• É a instrução em si;
• Linguagem simbólica de máquina = linguagem assembly =
  representação dos bits da instrução;
• Exemplo:
• ADD SALARIO, TAXA = 11010011110010000011110011001101
• A operação ADD (soma/adição) acima tem dois operandos
  (salario e taxa);
                                                             9
OpCode
• Essa poderia ser uma instrução de 32 bits, dividida como abaixo:

           C.OP.             Operando 1            Operando 2
           ADD                 SALARIO                TAXA
         11010011           110010000011         110011001101
           8 BITS               12 BITS              12 BITS
                         8 + 12 + 12 = 32 BITS

• A quantidade de bits por campo é definida pelo projetista.
• A quantidade no C.OP. define o limite máximo de instruções que o
  processador poderá executar:
   • Se OpCode com 7 bits, então, 27 = 128 instruções;
   • Se OpCode com 8 bits, então, 28 = 256 instruções;
• A quantidade de bits no OpCode pode ser definido de duas formas pelo   10
  projetista:
   • Tamanho fixo:
   • Tamanho variável:
OpCode
• Tamanho fixo:
   • Quantidade definida de bits;
   • Típico de arquiteturas RISC;
   • Se sabe, exatamente, quantas instruções o processador pode
     executar;
   • Mais simples de implementar e manipular durante a execução;
   • Conforme a tecnologia avança, são necessárias mais instruções e
     o tamanho de OpCode cresce com isso, pois precisa acomodar
     todos os códigos necessários, o que afeta diretamente a memória
     principal (mais endereçamento é necessário);
   • A memória principal é um dos componentesmais caros de um
     computador, o ideal é que seu espaço não seja desperdiçado mas
     sim usado com eficiência.                                         11
   • Exemplos: Intel 8080 e 8085 – 8 bits de OpCode;
OpCode
• Tamanho variável:
   • Quantidade indefinida de bits, podendo variar conforme a
     operação a ser realizada;
   • Típico de arquiteturas CISC;
   • Codifica uma quantidade maior de instruções com menor
     quantidade de bits;
   • Permite campos de operandos com tamanhos diferentes;
   • Mais instruções com quantidades diferentes de operandos;
   • Permite aumentar o tamanho total da instrução, o que
     também acarreta problemas com a memória principal;
   • Exemplos: Intel 8086, 8088 e 80286 – 1 byte de OpCode;
     Intel 386, 486 e Pentium – varia entre 1 e 2 bytes de
     OpCode;                                                    12
OpCode
• Como isso afeta o Decodificador de instruções na Unidade de
  Controle?
   • Se OpCode igual a 7 bits, então 27 = 128 instruções.
• No Decodificador isto implica em:
   • 7 entradas;
   • 128 saídas possíveis saídas para a Unidade de Controle;
• Isto é:
   • Em Unidades de controle implementadas por software:
       • 128 possíveis locais na memória de controle;
   • Em Unidades de controle implementadas em hardware:
       • 128 sequencias de execução;
• Resumindo: a quantidade de bits no OpCode também afeta a
  quantidade de saídas possíveis no Decodificador de Instruções da   13
  Unidade de Controle;
OpCode
• A decisão sobre a quantidade de bits a ser adotada no OpCode afeta
  o projeto como um todo.
• Se o projeto tem muitas instruções:
   • Maior flexibilidade;
   • Compilação mais rápida;
   • Instruções de máquina mais complexas são mais completas, o que
     acarreta um código de programa compilado mais simples de ser
     traduzido de uma linguagem de alto nível para baixo nível;
   • Hardware do processador é mais complexo, portanto, aumenta o
     custo de fabricação, visto que mais circuitos integrados serão
     necessários;
   • O decodificador de instruções também sérá mais complexo e
     levará mais tempo para decodificar as instruções, o que afeta o   14
     desempenho do sistema como um todo;
Operando
• É o dado que se deseja manipular;
• Pode estar armazenado em uma posição da memória ou
  registrador ou ainda explicito no campo;
• O endereço do local onde está armazenado o dado se encontra
  neste campo;
• Modo de endereçamento: é a diversidade de apresentação do
  dado na instrução – formas diferentes do dado aparecer na
  instrução;
• Dois aspectos importantes sobre os operandos:
   • Quantidade de operandos;
   • Modo de endereçamento;
                                                                15
Instruções com 4 operandos
• FORMATO:
    OpCode   Op1 Op2 Op3   Endereço próxima instrução

• Tamanho do OpCode: 6 bits;
• Tamanho dos Operandos: 11 bits cada;
• Tamanho total da instrução: 50 bits (6 + (11*4));
• Exemplo de instrução: ADD X, Y, Z, P que é:
   • Z = X + Y;
   • Soma-se X com Y e o resultado é armazenado em Z;
   • P contém o endereço da próxima instrução;
• Vantagem: Esse formato de instrução é completa pois possui
  todos os operandos necessários de uma operação aritmética;
• Desvantagem: precisa de mais espaço na memória principal e      16
  desperdiça espaço em outros tipos de operações; (nem todas as
  operações precisam de quatro operandos!)
Instruções com 4 operandos
• Instruções de desvio: apenas um campo operando. Em uma
  instrução com 4 operandos, apenas 11 dos 44 bits seriam usados.
  Isso significa desperdiçar espaço de memória.
• Instruções de carga: apenas dois campos operando. Em uma
  instrução com 4 operandos, apenas 22 dos 44 bits seriam usados.
  Isso significa desperdiçar espaço de memória.
• Dois fatores delicados no projeto de hardware computacional:
   • Economia do espaço da memória principal e,
     consequentemente, seu custo;
   • Conjunto completo e poderoso de instruções;
• Atualmente nenhuma máquina utiliza instruções com 4
  operandos. A próxima instrução a ser executada sempre estará
                                                                    17
  armazenada no PC – Contador de Programa/Programm Counter
  ou IP – Instruction Pointer/Ponteiro de Instrução.
Instruções com 3 operandos
• FORMATO: OpCode         Op1 Op2 Op3

• Operando 1 e 2: contém o endereço de onde está armazenado o
  dado;
• Operando 3: contém o endereço de onde será armazenado o
  resultado da operação entre os operandos 1 e 2;
• Exemplos de instruções em Assembly:
   • ADD A, B, X       ;X = A + B
   • SUB A, B, X       ;X = A – B
   • MPY A, B, X       ;x = A * B
   • DIV A, B, X       ;X = A / B
• Obs.: Instrução Assembly é uma instrução de máquina
  representada de forma símbólica em vez de sua representação   18
  binária;
Instruções com 3 operandos
• Como você resolveria a expressão algébrica abaixo?
                    X=A*(B+C*D–E/F)
• Qual das operações aritméticas você resolveria primeiro?
• Existem leis e prioridades, na matemática, que você deve
  considerar no momento de resolver a expressão?
• Você consegue imaginar um algoritmo que possa resolvê-la?
• Como seria, então, a resolução, passo a passo?

    X=A*(B+C*D–E/F)              X = A * ( T3 – T2 )
    X = A * ( B + T1 – E / F )   X = A * ( T3 – T2 )
    X = A * ( B + T1 – E / F )   X = A * ( T4 )
    X = A * ( B + T1 – T2 )      X = A * ( T4 )
                                                              19
    X = A * ( B + T1 – T2 )      X=X
Instruções com 3 operandos
• Algoritmo Passo a Passo:
  • Resolver os parenteses;
  • Resolver a multiplicação, C*D, e armazenar o resultado
     temporariamente em outra variável;
  • Resolver a divisão, E/F, e armazenar o resultado
     temporariamente em outra variável;
  • Resolver a soma, B + resultado de C* D, e armazenar o
     resultado temporariamente em outra variável;
  • Resolver a subtração;
  • Resolver a multiplicação;
  • Armazenar o resultado de tudo isso em X;
                                                             20
Instruções com 3 operandos
• Suponha que esta expressão algébrica faça parte de um
  programa C que é traduzido para linguagem de máquina para
  que possa ser executado. Dessa forma, como fica a referida
  expressão em linguagem de máquina?

MPY C, D, T1   ;T1 = C * D
DIV E, F, T2   ;T2 = E / F          Variáveis: endereços simbólicos
ADD B, T1, X   ;X = B + T1          de memória. A, B, C, D, E, F, T1,
SUB X, T2, X   ;X = X – T2          T2, X são variáveis.
MPY A, X, X    ;X = A * X

• Observe que ficou diferente da forma que foi resolvida
  manualmente, entretanto, as prioridades de execução                   21
  aritméticas, foram consideradas. Apenas a forma de
  armazenameto temporário é empregada diferente.
Instruções com 2 operandos
                             OpCode   Op1        Op2
• FORMATO:
                                 OpCode Destino Origem
• ADD A, B       ;A = A + B;
• As instruções ficariam como a seguir:
   • ADD Op1, Op2         ;Op1 = Op1 + Op2
   • SUB Op1, Op2         ;Op1 = Op1 - Op2
   • DIV Op1, Op2         ;Op1 = Op1 / Op2
   • MPY Op1, Op2         ;Op1 = Op1 * Op2
• Op1 tem um conteúdo que está armazenado em um endereço de
  memória. Para que esse conteúdo não seja perdido, ao se salvar o
  novo valor resultante da operação, pode-se movê-lo para outro
  endereço usando a instrução MOVE. Exemplo:
   MOVE C, A              ;C = A
                                                                     22
   ADD A, B               ;A = A + B
Instruções com 2 operandos
• X = A * ( B + C * D – E / F ):

      MPY C, D           ;C = C * D
      DIV E, F           ;E = E / F
      ADD B, C           ;B = B + C
      SUB B, E           ;B = B - E
      MPY A, B           ;A = A * B
      MOVE X, A          ;X = A

• Nesta versão as variáveis perdem o seu conteúdo, o que
                                                           23
  não é aconselhável.
Instruções com 2 operandos
• Uma versão melhor, para o mesmo programa, evitando as
  perdas, é mostrado abaixo:

    MOVE X, C             ;X = C
    MPY X, D              ;X = X * D
    MOVE T1, E            ;T1 = E
    DIV T1, E             ;T1 = T1 / E
    ADD X, B              ;X = X + B
    SUB X, T1             ;X= X – T1
    MPY X, A              ;X = X * A
                                                          24
Instruções com 1 operando
• FORMATO: OpCode        Op1

• Um registrador específico é utilizado com esse tipo de
  instrução: ACC – acumulador;
• Ele é um operando implícito;
• Armazena o valor de um dos dados;
• Armazena o resultado da operação;
• Instruções:
      ADD Op ; ACC = ACC + Op
      SUB Op ; ACC = ACC - Op
      MPY Op ; ACC = ACC * Op
      DIV Op ; ACC = ACC / Op                              25
Instruções com 1 operando
• Duas instruções fazem a transferencia de dados entre a
  memória principal e o registrador ACC:

• LDA Op      ;ACC = Op
• STA Op      ;Op = ACC

• Como ficaria então a expressão algébrica X = A * ( B + C * D
  – E / F ) com instruções de 1 operando?



                                                                 26
Instruções com 1 operando
LDA C    ;ACC = C
MPY D    ;ACC = ACC * D
STA X    ;X = ACC
LDA E    ;ACC = E
DIV F    ;ACC = ACC / F
STA T1   ;T1 = ACC
LDA B    ;ACC = B
ADD X    ;ACC = ACC + X
SUB T1   ;ACC = ACC – T1
MPY A    ;ACC = ACC * A
STA A    ;A = ACC           27
Comparativo
                                                                Tamanho
OpCode       Operando1          Operando2      Operando3
 8 bits         20 bits           20 bits         20 bits        68 bits
 4 acessos a memoria = 1 para buscar a instrução mais 3 para cada operando


OpCode       Operando1          Operando2
 8 bits         20 bits           20 bits                        48 bits
 4 acessos a memoria = 1 para buscar a instrução mais 3 para cada operando


OpCode       Operando1
 8 bits         20 bits                                          28 bits
 2 acessos a memoria = 1 para buscar a instrução mais 1 para cada operando   28
Comparativo
                  2 operandos sem   2 operandos com
3 operandos                                           1 operando
                  salvamento        salvamento
5 linhas de       6 linhas de       7 linhas de       11 linhas de
programa          programa          programa          programa
2 instruções de   2 instruções de   2 instruções de   2 instruções de
multiplicação     multiplicação     multiplicação     multiplicação
1 instrução de    1 instrução de    1 instrução de    1 instrução de
divisão           divisão           divisão           divisão
1 instrução de    1 instrução de    1 instrução de    1 instrução de
adição            adição            adição            adição
1 instrução de    1 instrução de    1 instrução de    1 instrução de
subtração         subtração         subtração         subtração
340 bits          288 bits          336 bits          308 bits
(5*68 bits)       (6*48 bits)       (7*48 bits)       (11*28 bits)
                                                                        29
20 acessos        24 acessos        28 acessos        22 acessos
(4*5)             (4*6)             (4*7)             (2*11)
Instruções com zero
operandos
• Não possui operandos;
• Utiliza PILHA, um tipo de estrutura de dados para
  armazenamento;
• PILHA: “último a entrar, primeiro a sair”, neste caso, “último a
  chegar, primeiro a ser manipulado”;
• Pode ser organizada com registradores ou em uma parte da
  memória;
• Requer um registrador específico: PS – STACK POINTER ou
  PONTEIRO DE PILHA: contém o endereço de acesso ao topo da
  pilha;

                                                                     30
Instruções com zero
operandos
• Tipos de instruções que manipulam pilhas:
• Instruções de acesso:
   • PUSH: armazena o dado no topo da pilha – empilha –
     decrementando o ponteiro de pilha (SP = SP – 1);
   • POP: remove o dado do topo da pilha – desempilha –
     incrementa o ponteiro da pilha (SP = SP + 1);
• Instruções aritméticas: ADD, SUB, MPY, DIV, etc.;
• Exemplo de instrução com zero operando:
• ADD           ;soma os dois valores no topo da pilha
                 ;Remove os dois valores
                 ;Desempilha                              31
                 ;Armazena o resultado em um novo topo
Instruções com zero
operandos
 POP
                            PILHA   POSIÇÃO
 Se o dado está na                     0
 posição 6, então ele é o              1
 topo da pilha. Assim, se
 ele for removido, o                   2
 dado abaixo dele se                   3
 torna o topo da pilha.                4

 SP = SP + 1                           5
                                       6
 SP = 6 + 1 = 7                        7
                                       8
                                              32
Modos de Endereçamento
• Resumo sobre o formato básico das instruções de máquina:
• O contador de programa sempre tem o endereço da próxima
  instrução que será executada;
• Todo ciclo de instrução começa com a transferência da
  instrução para o registrador de instrução;
• Toda instrução tem um código de operação;
• Os local dos dados podem estar implicitamente ou
  explicitamente indicados na instrução, podendo ter zero ou
  mais campos operandos;
• Há mais de um modo de localizar um dado da instrução na
  memória principal;
                                                               33
Modo Imediato
•   Método simples e rápido;
•   Indica o valor do dado no próprio campo operando;
•   Não busca o dado do campo operando na memória;
•   Curto tempo de execução da instrução;
•   O dado é transferido da memória junto com a instrução;
•   Utilizado em:
•   Inicialização de contadores (valor fixo);
•   Operação com constantes (valor fixo) matemáticas;
•   Armazenamento de ponteiros;
•   Deslocamento de bits;
                                                             34
Modo Imediato
• Intel Pentium e AMD Athlon usam algumas instruções de
  modo imediato: desvio, movimentação, operações aritméticas
  com constantes, entre outras;
• Exemplos:
                         MOV R, Op

MOV AL, 22H ;Copia o valor hexadecimal 22 para o registrador
AL – 1 byte de tamanho;

MOV EBX, 33445566H ;Copia o valor hexadecimal 33445566
para o registrador EBX – 32 bits;
                                                               35
Modo Imediato
OpCode        Operando
1010H         00110101H
A             35
4 bits        8 bits

•   JMP OP        ;contador de instrução recebe o operando
•   JMP = JUMP = SALTO
•   A instrução tem tamanho de 12 bits
•   A instrução em binário é 101000110101
•   A instrução em hexadecimal é A35
•   Portanto, a instrução JMP OP armazena o valor 35 no contador
    de instrução;                                                  36
Modo Imediato
    OpCode    R        Operando
    0101H     0011H    00000111H
    5         3        07
    4 bits    4 bits   8 bits

•   MOV R, Op ;o registrador R recebe o valor do Operando
•   A instrução tem tamanho de 16 bits
•   A instrução em binário é 0101001100000111
•   A instrução em hexadecimal é 5307
•   Portanto, a instrução MOV R, OP armazena o valor 07 no
    registrador 3;
                                                             37
Modo Direto
• O campo operando indica o endereço de memória onde está o
  dado;
• Requer apenas uma referência à memória principal para
  buscar o dado;
• O dado deve ser transferido do dispositivo de entrada para a
  memória principal;
• Variável de programa: quando um dado varia de valor a cada
  execução do programa. Representa simbolicamente o
  endereço do dado;
• EXEMPLO

                                                                 38
MEMÓRIA

Modo Direto                                        C1           8B


OpCode              Operando
11110111            000000000000000011000001
F7                  0000C1
8 bits              24 bits
• LDD OP ;o registrador R0 recebe o operando
• A instrução diz: Armazene no registrador R0 o valor cujo endereço de
  memória é o C1;
• A instrução tem 32 bits;
• A instrução em binário é:
• 11110111000000000000000011000001
• A instrução em hexadecimal é: F 7 0 0 0 0 C 1
• C 1 é o endereço da memória onde o dado está armazenado;               39
• O valor armazenado em C1 é 8B;
Modo Direto                                           MEMÓRIA
  OpCode          Operando
   0111         00 111010                    3B         05A
     7               3B
   4 bits           8 bits

• LDA OP ;O registrador R recebe o operando
• Após a execução da instrução, uma cópia do valor armazenado na
  memória, no endereço indicado no campo operando, será
  armazenado no registrador R;
• A instrução tem 12 bits;
• A instrução em binário é: 0 1 1 1 0 0 1 1 1 0 1 0;
• A instrução em hexadecimal é: 73B;
• 3B contém o valor 05A;
                                                                   40
• Então, R = 05A;
Modo Direto
 OpCode         Operando1              Operando2
     B              5C                    3B
  0111        01011100             00111011
   4 bits         8 bits                 8 bits

• ADD OP1, OP2             ;Somar Op1 com Op2 armazenando                o
  resultado em OP1
• A instrução em binário é: 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1;
• A instrução em hexadecimal é: B5C3B;           Antes          Depois
• A instrução tem 20 bits;                     MEMÓRIA         MEMÓRIA
• 5A: 000001011010
• 103: 000100000011
                                   3B              05A             05A
                                                                             41


                                  5C               103        15D
Modo Indireto
• O campo operando representa o endereço de uma célula de
  memória;
• O conteúdo da célula de memória NÃO É um dado, mas sim
  OUTRO endereço de memória;
• Usa mais ciclos de memória para buscar o dado;
• PONTEIRO: é o endereço intermediário, indica ou aponta para
  a localização do dado;




                                                                42
Modo Indireto
OpCode       Operando
01010011 000000000000000011000001
53           0000C1
8 bits       24 bits


     • LDI OP ;O registrador R0 recebe o operando;
     • C1: contém o endereço da memória principal onde está
       armazenado, de fato, o valor a ser manipulado;
                                     MEMÓRIA


                             C1         8B
                                                              43


                             8B         42
Modo Indireto
OpCode       Operando
0100         01110100
4            74
4 bits       8 bits


    • LDA OP ;O registrador R recebe o operando



                                         MEMÓRIA


                                74         05D
                                                   44


                                5D         14A
Identificação do Modo de
Enderaçamento
1. Cada código de operação estabelece:
     • Tipo da instrução;
     • Modo de endereçamento;
2. A instrução tem um campo específico para indicar o modo de
   enderaçamento: OpCode + Modo + Operando;




                                                                45
Comparação entre os Modos de
Enderaçamento Direto,
Indireto e Imediato
 • Modo indireto: não requer acesso à MP, velocidade de
   execução rápida;

 • Modo direto: requer apenas um acesso à MP, velocidade de
   execução média;

 • Modo indireto: requer dois acessos à MP, velocidade de
   execução lenta;                                            46
Comparação entre os Modos de
  Enderaçamento Direto,
  Indireto e Imediato

MODO        OPERANDO             VANTAGENS             DESVAN TAGENS
                                                       Indadequado para
Imediato   Contém o dado       Execução rápida
                                                        uso com variáveis
                                                         Desperdício de
             Contém o      Flexibilidade no acesso a
 Direto                                                tempo se o dado é
             endereço               variáveis
                                                          um valor fixo
             Contém o
                           Manuseio de vetores e       Muitos acessos à     47
Indireto    endereço do
                           usado como ponteiro         memória principal
             endereço
Por Registrador
•   Usa-se registradores no lugar da memória principal;
•   Execução rápida pois o dado encontra-se no registrador;
•   Exemplo:
•   Escrever, em linguagem assembly, no modo de
    endereçamento direto, as instruções do seguinte trecho de
    programa em linguagem de médio nível:

         DO i=1 TO 100     O código lê dois valores e soma-os cem vezes.
         READ a,b
                                              Do = faça
         x=a+b                                To = para
         End;                                 Read = ler
                                                                           48
                                              End = fim
                                       i, x, a e b = variáveis
14 linhas de código

Por Registrador                        200 ciclos de memória:

                                       100 para leitura
      GET L    ;L = 100 (L de Loop)
                                       100 para escrita
      LDA L    ;R0 = L
      SUBM 0   ;R0 = R0 – 0 (100 – 0)
In    STA i    ;i = R0 (i=100)
      JZ Fim   ;se R0 = 0 então vá para Fim
      GET a    ;lê o valor do dado que está no endereço a
      GET b    ;lê o valor do dado que está no endereço b
      LDA a    ;R0 = a
      ADD b    ;R0 = R0 + b
      STR x    ;x = R0
      LDA i    ;R0 = i
      DCR      ;R0 = R0 – 1 (i+1)      LD = load (carregamento)   49
                                       DCR = decremento
      JMP In   ;vá para In             SUB = subtração
Fim   HLT      ;pare
Por Registrador
Escrever o mesmo programa no modo de endereçamento por
registrador:

      MOV R6, 64   ;R6 = 100
In    DCR R6       ;R6 = R6 – 1 (decrementa cem vezes)
      JZ R6, Fim   ;se R6 = 0 vá para o Fim
      GET a        ;obtém o valor do dado que está no endereço a
      GET b        ;obtém o valor do dado que está no endereço b
      MOV R8, a    ;R8 = a
      ADD R8, b    ;R8 = R8 + b
      MOV b, R8    ;x = R8
      JMP In       ;vá para In
                                            10 linhas de código    50
Fim   HLT          ;pare
Por Registrador
• Dois modos de endereçamento por registrador:
  • DIRETO: contém o dado a ser manipulado;
  • INDIRETO: contém o endereço de uma célula de memória
    onde o dado se encontra;

• VANTAGENS:
  • Execução rápida
  • Economia de espaço
  • Só é vantajoso se o modo proporcionar redução de ciclos de
    memória;
  • As vantagens nem sempre são aplicáveis e por isso podem      51
    se tornar desvantagens;
Por Registrador
• DESVANTAGEM:
  • Em arquiteturas CISC:
     • Dificuldade em definir quais dados serão armazenados
       no registrador e quais na memória principal: quem faz
       isso é o compilador e ocorre devido aos poucos
       registradores existentes e aos muitos dados que devem
       ser manipulados;

• Exemplos:
  • ADD registrador, registrador
  • ADD registrador, memória
                                                               52
  • ADD registrador, registrador, registrador
Modo Indexado
• Manipulação de endereços de acesso a elementos de tipos
  especiais de dados;
• Os endereços são ponteiros para os elementos;
• Exemplo: vetores e outras estruturas de dados;
• Indexado: obtém-se o endereço do dado de um elemento por
  meio de seu índice;
• Endereço = campo operando + valor contido no registrador de
  índice;



                                                                53
Modo Indexado
• Exemplos de instruções usadas no modo indexado:

•   MVI RX, OP       ;RX = OP (mover)
•   LDA RX, OP       ;ACC = OP + RX (carregar)
•   STA RX, OP       ;OP + RX = ACC (armazenar)
•   ADD RX, OP       ;ACC = ACC + (OP + RX) (somar)
•   JMP OP           ;CI = OP
•   JZR RX, OP       ;CI = OP SE RX = 0
•   DCR RX           ;RX = RX – 1 (decrementar)
•   INC RX           ;RX = RX + 1 (incrementar)
•   END              ;pare                            54
Assembly
• Linguagem de máquina:
• programa executável direto pelo hardware;
• Conjunto contínuo de sinais elétricos (0s e 1s);
• Complexa e difícil;
• Tela azul do windows: é uma imagem (dump) da memória do
  sistema em um dado instante. A imagem é uma sequencia de
  algarismos hexadecimais com seu respectivo endereço e o
  conteúdo de alguns registradores;
• Uma linha de código em hexadecimal produz várias linhas
  código em linguagem de máquina;

                                                             55
Assembly
• Assembly é uma linguagem de montagem ou linguagem de
  símbolos alfabéticos, em que os códigos hexadecimais são
  programados como símbolos, exemplo: ADD = 011;
• PASCAL: X := A + B + C;
• Programa em HEXADECIMAL:
   • 1234
   • 324
   • 425
   • 226
• Programa em linguagem de máquina:
   • 000100100011
   • 001100100100
   • 010000100101
   • 001000100110                                            56
Assembly
• Programa em lingaugem de montagem:
  • PROG SOMA
  • LDA A
  • ADD B
  • SUB C
  • STR X

  • FORMATO DE UMA INSTRUÇÃO EM ASSEMBLY

   rótulo      sigla       operandos   ;Comentários
   label       mneumonic   operands    ;comment       57
Assembly
• Rótulo: campo opcional, indica um endereço significativo
  no programa, como, por exemplo, o início do programa;
• Sigla: campo obrigatório, código da operação da instrução;
• Operandos: símbolos representativos dos endereços de
  memória ou registradores;
• Comentários: campo opcional, comentário sobre a
  instrução;
• A linguagem Assembly não é diretamente executável em
  hardware;
• Por este motivo, precisa de um programa tradutor, o
  MONTADOR, que traduz os símbolos para linguagem de
                                                               58
  máquina;
Assembly
• O Montador é um programa desenvolvido para atender às
  particularidades de um processador específico, exatamente
  àquele em que será executado (dependente do hardware);
• Um montador para o Pentium não funcionará para o
  PowerPC: o formato e o conjunto das instruções são
  diferentes, assim como o código gerado;
• Utiliza de modo mais eficiente os recursos do hardware;
• Na maioria das vezes, apenas o criador do montador sabe
  realmente como ela funciona e como os programas devem
  ser escritos em assembly;
• Manutenção desses programas são caras por não haver
                                                              59
  especialistas na área;
Assembly
  CÓDIGO
            Programa original em linguagem de montagem
   FONTE




 MONTAGEM                 MONTADOR




                                                         60
  CÓDIGO
            Programa resultante, em linguagem binária
  OBJETO
Assembly
• O que faz o montador?
  • Substitui códigos de operações simbólicos pelos valores
    binários das operações. Ex.: LOAD = 00101101
  • Substitui endereços simbólicos pelos valores binários dos
    endereços.
  • Reseva espaço de memória para armazenar as instruções e
    dados;
  • Converte os valores constantes por valores binários;
  • Confere as palavras chaves reservadas;
  • Verifica erros no programa;

                                                                61
Assembly
• O montador sempre examina, instrução por instrução,
  verificando se elas estão escritas corretamente e se os campos
  estão definidos de acordo com a estrutura da linguagem de
  montagem;
• Depois o montador cria uma tabela de símbolos de códigos de
  operação e uma tabela de símbolos de endereços;
• Cada operação e cada endereço é uma entrada da tabela;
• Métodos de busca em tabelas são implementados de forma
  que estas sejam feitas eficientemente, tornando
  extremamente rápido o processo de montagem;

                                                                   62

More Related Content

What's hot

Aula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareAula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareSuzana Viana Mota
 
Teclas e funções do teclado
Teclas e funções do tecladoTeclas e funções do teclado
Teclas e funções do tecladoemefetchegoyen
 
1ª aula introdução a informática
1ª aula introdução a informática1ª aula introdução a informática
1ª aula introdução a informáticasocrahn
 
Aula: Tipos de Interface
Aula: Tipos de InterfaceAula: Tipos de Interface
Aula: Tipos de InterfaceJanynne Gomes
 
Aula 3 sistema computacional (hardware e software)
Aula 3   sistema computacional (hardware e software)Aula 3   sistema computacional (hardware e software)
Aula 3 sistema computacional (hardware e software)Vitor Hugo Melo Araújo
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisvini_campos
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Leinylson Fontinele
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUAlexandre Duarte
 
Informática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional WindowsInformática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional WindowsJoeldson Costa Damasceno
 
Aula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorAula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorSuzana Viana Mota
 
3° unidade (placa mãe)
3° unidade (placa mãe)3° unidade (placa mãe)
3° unidade (placa mãe)André Lopes
 
Conhecendo o computador 01
Conhecendo o computador 01Conhecendo o computador 01
Conhecendo o computador 01Ricardo Almeida
 
Introdução à Computação Aula 01 - Apresentação
Introdução à Computação  Aula 01 - ApresentaçãoIntrodução à Computação  Aula 01 - Apresentação
Introdução à Computação Aula 01 - ApresentaçãoLeinylson Fontinele
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaSilvia Dotta
 

What's hot (20)

Aula 03 - Hardware e Software
Aula 03 - Hardware e SoftwareAula 03 - Hardware e Software
Aula 03 - Hardware e Software
 
Teclas e funções do teclado
Teclas e funções do tecladoTeclas e funções do teclado
Teclas e funções do teclado
 
1ª aula introdução a informática
1ª aula introdução a informática1ª aula introdução a informática
1ª aula introdução a informática
 
Aula: Tipos de Interface
Aula: Tipos de InterfaceAula: Tipos de Interface
Aula: Tipos de Interface
 
Aula 3 sistema computacional (hardware e software)
Aula 3   sistema computacional (hardware e software)Aula 3   sistema computacional (hardware e software)
Aula 3 sistema computacional (hardware e software)
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
Aula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativosAula 10 Software - sistema operacional e aplicativos
Aula 10 Software - sistema operacional e aplicativos
 
Arduino
ArduinoArduino
Arduino
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPU
 
Informática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional WindowsInformática Básica - Aula 05 - Sistema Operacional Windows
Informática Básica - Aula 05 - Sistema Operacional Windows
 
Aula 09 - Memórias do Computador
Aula 09 - Memórias do ComputadorAula 09 - Memórias do Computador
Aula 09 - Memórias do Computador
 
3° unidade (placa mãe)
3° unidade (placa mãe)3° unidade (placa mãe)
3° unidade (placa mãe)
 
Endereçamento de memória
Endereçamento de memóriaEndereçamento de memória
Endereçamento de memória
 
Conhecendo o computador 01
Conhecendo o computador 01Conhecendo o computador 01
Conhecendo o computador 01
 
Inf basica modulo2
Inf basica modulo2Inf basica modulo2
Inf basica modulo2
 
Introdução à Computação Aula 01 - Apresentação
Introdução à Computação  Aula 01 - ApresentaçãoIntrodução à Computação  Aula 01 - Apresentação
Introdução à Computação Aula 01 - Apresentação
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-Máquina
 

Similar to Conjunto de Instruções e Operações Primitivas

Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core DuoSamuel Bié
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016André Curvello
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoesCratuscb
 
Curso informtica manuten o - inicial
Curso informtica   manuten o - inicialCurso informtica   manuten o - inicial
Curso informtica manuten o - inicialTiago
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladoresAlyson Cavalcante
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESwillian324163
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem cJefferson Bessa
 
Assemblyparte1 140320111308-phpapp02
Assemblyparte1 140320111308-phpapp02Assemblyparte1 140320111308-phpapp02
Assemblyparte1 140320111308-phpapp02bruno santos ferreira
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyElaine Cecília Gatto
 
Clp completa
Clp completaClp completa
Clp completapanelada
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaLincoln Lamas
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!Intel Software Brasil
 

Similar to Conjunto de Instruções e Operações Primitivas (20)

Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
Laboratórios do HandsOn de mbedOS - FTF Connects SP 2016
 
Aula 7 conjunto de instrucoes
Aula 7   conjunto de instrucoesAula 7   conjunto de instrucoes
Aula 7 conjunto de instrucoes
 
Curso informtica manuten o - inicial
Curso informtica   manuten o - inicialCurso informtica   manuten o - inicial
Curso informtica manuten o - inicial
 
Apostila cpic
Apostila cpicApostila cpic
Apostila cpic
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORESARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
 
Instrucoes
InstrucoesInstrucoes
Instrucoes
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem c
 
Arm Cortex
Arm CortexArm Cortex
Arm Cortex
 
Exercicios 06
Exercicios 06Exercicios 06
Exercicios 06
 
Assemblyparte1 140320111308-phpapp02
Assemblyparte1 140320111308-phpapp02Assemblyparte1 140320111308-phpapp02
Assemblyparte1 140320111308-phpapp02
 
Arquitetura de Computadores: Assembly
Arquitetura de Computadores: AssemblyArquitetura de Computadores: Assembly
Arquitetura de Computadores: Assembly
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Clp completa
Clp completaClp completa
Clp completa
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 

More from Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaElaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaElaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCElaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxElaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarElaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationElaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfElaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoElaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsElaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoElaine Cecília Gatto
 

More from Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Conjunto de Instruções e Operações Primitivas

  • 1. Arquitetura de Computadores – Conjunto de Instruções Prof.ª Ms. Elaine Cecília Gatto Disciplina: Arquitetura de Computadores Curso: Engenharia de Computação Semestre/Ano: 1/2012 1
  • 2. Introdução • O hardware funciona através de ordens simples e básicas; • O hardware não é capaz de manipular diretamente ordens mais complexas; • Instrução de máquina: ordens que são transmitidas ao hardware para serem interpretadas e executadas por um conjunto de bits. Especifica para o hardware que determinada operação deve ser realizada. • Set Instruction ou Conjunto de Instruções: grupo de instruções de máquina. Define o que um processador é capaz de realizar, permitindo ao programador do compilador escrever o código de acordo. • Quais operações o processador poderá realizar? 2 • Como cada operação será realizada?
  • 3. Introdução • ISA: instruction set architecture ou arquitetura do conjunto de instruções. É a interface entre o hardware e o software (e os compiladores), • Computadores de uso geral: possui um conjunto básico de instruções primitivas. Um programador pode combinar essas instruções de diferentes modos, obtendo diferentes resultados; • O computador, como conhecemos hoje, é capaz de executar diversos tipos diferentes de programas. Exemplo: Notepad e AutoCAD; • A “inteligência” e a versatilidade do sistema computacional estão na combinação das instruções primitivas visto que o hardware é imutável. • Computadores devem ser capazes de executar programas em 3 diversas linguagens.
  • 4. Introdução • Quando uma máquina nova é desenvolvida, surgem as seguintes perguntas: • A nova máquina é compatível com a antecessora? • A nova máquina pode executar meu sistema operacional? • A nova máquina executará todos os meus programas de aplicação existentes sem modificação? • Ninguém quer jogar fora seus programas antigos e começar do zero novamente! • Isto faz parte do projeto do ISA. • DESAFIO: construir máquinas melhores sujeitas às limitações da compatibilidade. 4
  • 5. Operações Primitivas Mais Comuns • Transferencia de uma palavra de dados de uma célula para outra; • Somar dois operandos, guardando o resultado em um deles ou em um terceiro operando; • Desviar para outro endereço fora da sequencia; • Testar uma condição. Se o teste resultar em verdadeiro, desvia para outro endereço; • Realizar operação lógica AND entre dois valores; • Parar a execução de um programa; • Adicionar 1 a um valor de operando; • Transferencia de byte da porta de E/S para a MP e vice-versa; 5 • Substituição do operando por seu valor absoluto.
  • 6. Projeto do conjunto de instruções • Quais são os elemetos requeridos para a execução de uma operação? • Qual o formato binário da instrução de máquina? • Quais tipos de dados serão manipulados? • No projeto então é definido: • Quais operações o processador realizará; • Como as operações são identificadas; • Como as operações são executadas: necessário especificar a sequencia de microoperações que de fato realizarão a tarefa; • Formato básico de uma instrução: 6 Código de operção Campo do Operando ou Operandos
  • 7. Projeto do conjunto de instruções • Código de Operação – C. Op.: indica ao processador o que fazer e como fazer – Operation Code ou OpCode. Este código é único para cada operação. • Operando – Op.: indica ao processador qual dado ou dados a operação se realizará, ou seja, o endereço do dado. Pode haver instruções com mais de um campo operando e este campo também pode indicar o próprio valor do dado. • Ambos os campos são formados por uma quantidade de bits; • Formato de instruções, largura dos campos e conteúdo variam de acordo com a arquitetura; 7
  • 8. Projeto do conjunto de instruções • Exemplos: Instrução de 3 operandos com memória C.Op. Op.1 Op.2 Op.3 ADD Op.1 Op.2 Op.3 Instrução de 2 operandos com memória C.Op. Op.1 Op.2 MOV Op.1 Op.2 Instrução de 2 operandos com registrador 8 C.Op. Op.1 Op.2 ADD R Op.2
  • 9. OpCode • Indica qual é a operação a ser executada; • É o nome da instrução propriamente dita; • Sinaliza para a unidade de controle o procedimento a ser seguido para execuação da operação; • É a instrução em si; • Linguagem simbólica de máquina = linguagem assembly = representação dos bits da instrução; • Exemplo: • ADD SALARIO, TAXA = 11010011110010000011110011001101 • A operação ADD (soma/adição) acima tem dois operandos (salario e taxa); 9
  • 10. OpCode • Essa poderia ser uma instrução de 32 bits, dividida como abaixo: C.OP. Operando 1 Operando 2 ADD SALARIO TAXA 11010011 110010000011 110011001101 8 BITS 12 BITS 12 BITS 8 + 12 + 12 = 32 BITS • A quantidade de bits por campo é definida pelo projetista. • A quantidade no C.OP. define o limite máximo de instruções que o processador poderá executar: • Se OpCode com 7 bits, então, 27 = 128 instruções; • Se OpCode com 8 bits, então, 28 = 256 instruções; • A quantidade de bits no OpCode pode ser definido de duas formas pelo 10 projetista: • Tamanho fixo: • Tamanho variável:
  • 11. OpCode • Tamanho fixo: • Quantidade definida de bits; • Típico de arquiteturas RISC; • Se sabe, exatamente, quantas instruções o processador pode executar; • Mais simples de implementar e manipular durante a execução; • Conforme a tecnologia avança, são necessárias mais instruções e o tamanho de OpCode cresce com isso, pois precisa acomodar todos os códigos necessários, o que afeta diretamente a memória principal (mais endereçamento é necessário); • A memória principal é um dos componentesmais caros de um computador, o ideal é que seu espaço não seja desperdiçado mas sim usado com eficiência. 11 • Exemplos: Intel 8080 e 8085 – 8 bits de OpCode;
  • 12. OpCode • Tamanho variável: • Quantidade indefinida de bits, podendo variar conforme a operação a ser realizada; • Típico de arquiteturas CISC; • Codifica uma quantidade maior de instruções com menor quantidade de bits; • Permite campos de operandos com tamanhos diferentes; • Mais instruções com quantidades diferentes de operandos; • Permite aumentar o tamanho total da instrução, o que também acarreta problemas com a memória principal; • Exemplos: Intel 8086, 8088 e 80286 – 1 byte de OpCode; Intel 386, 486 e Pentium – varia entre 1 e 2 bytes de OpCode; 12
  • 13. OpCode • Como isso afeta o Decodificador de instruções na Unidade de Controle? • Se OpCode igual a 7 bits, então 27 = 128 instruções. • No Decodificador isto implica em: • 7 entradas; • 128 saídas possíveis saídas para a Unidade de Controle; • Isto é: • Em Unidades de controle implementadas por software: • 128 possíveis locais na memória de controle; • Em Unidades de controle implementadas em hardware: • 128 sequencias de execução; • Resumindo: a quantidade de bits no OpCode também afeta a quantidade de saídas possíveis no Decodificador de Instruções da 13 Unidade de Controle;
  • 14. OpCode • A decisão sobre a quantidade de bits a ser adotada no OpCode afeta o projeto como um todo. • Se o projeto tem muitas instruções: • Maior flexibilidade; • Compilação mais rápida; • Instruções de máquina mais complexas são mais completas, o que acarreta um código de programa compilado mais simples de ser traduzido de uma linguagem de alto nível para baixo nível; • Hardware do processador é mais complexo, portanto, aumenta o custo de fabricação, visto que mais circuitos integrados serão necessários; • O decodificador de instruções também sérá mais complexo e levará mais tempo para decodificar as instruções, o que afeta o 14 desempenho do sistema como um todo;
  • 15. Operando • É o dado que se deseja manipular; • Pode estar armazenado em uma posição da memória ou registrador ou ainda explicito no campo; • O endereço do local onde está armazenado o dado se encontra neste campo; • Modo de endereçamento: é a diversidade de apresentação do dado na instrução – formas diferentes do dado aparecer na instrução; • Dois aspectos importantes sobre os operandos: • Quantidade de operandos; • Modo de endereçamento; 15
  • 16. Instruções com 4 operandos • FORMATO: OpCode Op1 Op2 Op3 Endereço próxima instrução • Tamanho do OpCode: 6 bits; • Tamanho dos Operandos: 11 bits cada; • Tamanho total da instrução: 50 bits (6 + (11*4)); • Exemplo de instrução: ADD X, Y, Z, P que é: • Z = X + Y; • Soma-se X com Y e o resultado é armazenado em Z; • P contém o endereço da próxima instrução; • Vantagem: Esse formato de instrução é completa pois possui todos os operandos necessários de uma operação aritmética; • Desvantagem: precisa de mais espaço na memória principal e 16 desperdiça espaço em outros tipos de operações; (nem todas as operações precisam de quatro operandos!)
  • 17. Instruções com 4 operandos • Instruções de desvio: apenas um campo operando. Em uma instrução com 4 operandos, apenas 11 dos 44 bits seriam usados. Isso significa desperdiçar espaço de memória. • Instruções de carga: apenas dois campos operando. Em uma instrução com 4 operandos, apenas 22 dos 44 bits seriam usados. Isso significa desperdiçar espaço de memória. • Dois fatores delicados no projeto de hardware computacional: • Economia do espaço da memória principal e, consequentemente, seu custo; • Conjunto completo e poderoso de instruções; • Atualmente nenhuma máquina utiliza instruções com 4 operandos. A próxima instrução a ser executada sempre estará 17 armazenada no PC – Contador de Programa/Programm Counter ou IP – Instruction Pointer/Ponteiro de Instrução.
  • 18. Instruções com 3 operandos • FORMATO: OpCode Op1 Op2 Op3 • Operando 1 e 2: contém o endereço de onde está armazenado o dado; • Operando 3: contém o endereço de onde será armazenado o resultado da operação entre os operandos 1 e 2; • Exemplos de instruções em Assembly: • ADD A, B, X ;X = A + B • SUB A, B, X ;X = A – B • MPY A, B, X ;x = A * B • DIV A, B, X ;X = A / B • Obs.: Instrução Assembly é uma instrução de máquina representada de forma símbólica em vez de sua representação 18 binária;
  • 19. Instruções com 3 operandos • Como você resolveria a expressão algébrica abaixo? X=A*(B+C*D–E/F) • Qual das operações aritméticas você resolveria primeiro? • Existem leis e prioridades, na matemática, que você deve considerar no momento de resolver a expressão? • Você consegue imaginar um algoritmo que possa resolvê-la? • Como seria, então, a resolução, passo a passo? X=A*(B+C*D–E/F) X = A * ( T3 – T2 ) X = A * ( B + T1 – E / F ) X = A * ( T3 – T2 ) X = A * ( B + T1 – E / F ) X = A * ( T4 ) X = A * ( B + T1 – T2 ) X = A * ( T4 ) 19 X = A * ( B + T1 – T2 ) X=X
  • 20. Instruções com 3 operandos • Algoritmo Passo a Passo: • Resolver os parenteses; • Resolver a multiplicação, C*D, e armazenar o resultado temporariamente em outra variável; • Resolver a divisão, E/F, e armazenar o resultado temporariamente em outra variável; • Resolver a soma, B + resultado de C* D, e armazenar o resultado temporariamente em outra variável; • Resolver a subtração; • Resolver a multiplicação; • Armazenar o resultado de tudo isso em X; 20
  • 21. Instruções com 3 operandos • Suponha que esta expressão algébrica faça parte de um programa C que é traduzido para linguagem de máquina para que possa ser executado. Dessa forma, como fica a referida expressão em linguagem de máquina? MPY C, D, T1 ;T1 = C * D DIV E, F, T2 ;T2 = E / F Variáveis: endereços simbólicos ADD B, T1, X ;X = B + T1 de memória. A, B, C, D, E, F, T1, SUB X, T2, X ;X = X – T2 T2, X são variáveis. MPY A, X, X ;X = A * X • Observe que ficou diferente da forma que foi resolvida manualmente, entretanto, as prioridades de execução 21 aritméticas, foram consideradas. Apenas a forma de armazenameto temporário é empregada diferente.
  • 22. Instruções com 2 operandos OpCode Op1 Op2 • FORMATO: OpCode Destino Origem • ADD A, B ;A = A + B; • As instruções ficariam como a seguir: • ADD Op1, Op2 ;Op1 = Op1 + Op2 • SUB Op1, Op2 ;Op1 = Op1 - Op2 • DIV Op1, Op2 ;Op1 = Op1 / Op2 • MPY Op1, Op2 ;Op1 = Op1 * Op2 • Op1 tem um conteúdo que está armazenado em um endereço de memória. Para que esse conteúdo não seja perdido, ao se salvar o novo valor resultante da operação, pode-se movê-lo para outro endereço usando a instrução MOVE. Exemplo: MOVE C, A ;C = A 22 ADD A, B ;A = A + B
  • 23. Instruções com 2 operandos • X = A * ( B + C * D – E / F ): MPY C, D ;C = C * D DIV E, F ;E = E / F ADD B, C ;B = B + C SUB B, E ;B = B - E MPY A, B ;A = A * B MOVE X, A ;X = A • Nesta versão as variáveis perdem o seu conteúdo, o que 23 não é aconselhável.
  • 24. Instruções com 2 operandos • Uma versão melhor, para o mesmo programa, evitando as perdas, é mostrado abaixo: MOVE X, C ;X = C MPY X, D ;X = X * D MOVE T1, E ;T1 = E DIV T1, E ;T1 = T1 / E ADD X, B ;X = X + B SUB X, T1 ;X= X – T1 MPY X, A ;X = X * A 24
  • 25. Instruções com 1 operando • FORMATO: OpCode Op1 • Um registrador específico é utilizado com esse tipo de instrução: ACC – acumulador; • Ele é um operando implícito; • Armazena o valor de um dos dados; • Armazena o resultado da operação; • Instruções: ADD Op ; ACC = ACC + Op SUB Op ; ACC = ACC - Op MPY Op ; ACC = ACC * Op DIV Op ; ACC = ACC / Op 25
  • 26. Instruções com 1 operando • Duas instruções fazem a transferencia de dados entre a memória principal e o registrador ACC: • LDA Op ;ACC = Op • STA Op ;Op = ACC • Como ficaria então a expressão algébrica X = A * ( B + C * D – E / F ) com instruções de 1 operando? 26
  • 27. Instruções com 1 operando LDA C ;ACC = C MPY D ;ACC = ACC * D STA X ;X = ACC LDA E ;ACC = E DIV F ;ACC = ACC / F STA T1 ;T1 = ACC LDA B ;ACC = B ADD X ;ACC = ACC + X SUB T1 ;ACC = ACC – T1 MPY A ;ACC = ACC * A STA A ;A = ACC 27
  • 28. Comparativo Tamanho OpCode Operando1 Operando2 Operando3 8 bits 20 bits 20 bits 20 bits 68 bits 4 acessos a memoria = 1 para buscar a instrução mais 3 para cada operando OpCode Operando1 Operando2 8 bits 20 bits 20 bits 48 bits 4 acessos a memoria = 1 para buscar a instrução mais 3 para cada operando OpCode Operando1 8 bits 20 bits 28 bits 2 acessos a memoria = 1 para buscar a instrução mais 1 para cada operando 28
  • 29. Comparativo 2 operandos sem 2 operandos com 3 operandos 1 operando salvamento salvamento 5 linhas de 6 linhas de 7 linhas de 11 linhas de programa programa programa programa 2 instruções de 2 instruções de 2 instruções de 2 instruções de multiplicação multiplicação multiplicação multiplicação 1 instrução de 1 instrução de 1 instrução de 1 instrução de divisão divisão divisão divisão 1 instrução de 1 instrução de 1 instrução de 1 instrução de adição adição adição adição 1 instrução de 1 instrução de 1 instrução de 1 instrução de subtração subtração subtração subtração 340 bits 288 bits 336 bits 308 bits (5*68 bits) (6*48 bits) (7*48 bits) (11*28 bits) 29 20 acessos 24 acessos 28 acessos 22 acessos (4*5) (4*6) (4*7) (2*11)
  • 30. Instruções com zero operandos • Não possui operandos; • Utiliza PILHA, um tipo de estrutura de dados para armazenamento; • PILHA: “último a entrar, primeiro a sair”, neste caso, “último a chegar, primeiro a ser manipulado”; • Pode ser organizada com registradores ou em uma parte da memória; • Requer um registrador específico: PS – STACK POINTER ou PONTEIRO DE PILHA: contém o endereço de acesso ao topo da pilha; 30
  • 31. Instruções com zero operandos • Tipos de instruções que manipulam pilhas: • Instruções de acesso: • PUSH: armazena o dado no topo da pilha – empilha – decrementando o ponteiro de pilha (SP = SP – 1); • POP: remove o dado do topo da pilha – desempilha – incrementa o ponteiro da pilha (SP = SP + 1); • Instruções aritméticas: ADD, SUB, MPY, DIV, etc.; • Exemplo de instrução com zero operando: • ADD ;soma os dois valores no topo da pilha ;Remove os dois valores ;Desempilha 31 ;Armazena o resultado em um novo topo
  • 32. Instruções com zero operandos POP PILHA POSIÇÃO Se o dado está na 0 posição 6, então ele é o 1 topo da pilha. Assim, se ele for removido, o 2 dado abaixo dele se 3 torna o topo da pilha. 4 SP = SP + 1 5 6 SP = 6 + 1 = 7 7 8 32
  • 33. Modos de Endereçamento • Resumo sobre o formato básico das instruções de máquina: • O contador de programa sempre tem o endereço da próxima instrução que será executada; • Todo ciclo de instrução começa com a transferência da instrução para o registrador de instrução; • Toda instrução tem um código de operação; • Os local dos dados podem estar implicitamente ou explicitamente indicados na instrução, podendo ter zero ou mais campos operandos; • Há mais de um modo de localizar um dado da instrução na memória principal; 33
  • 34. Modo Imediato • Método simples e rápido; • Indica o valor do dado no próprio campo operando; • Não busca o dado do campo operando na memória; • Curto tempo de execução da instrução; • O dado é transferido da memória junto com a instrução; • Utilizado em: • Inicialização de contadores (valor fixo); • Operação com constantes (valor fixo) matemáticas; • Armazenamento de ponteiros; • Deslocamento de bits; 34
  • 35. Modo Imediato • Intel Pentium e AMD Athlon usam algumas instruções de modo imediato: desvio, movimentação, operações aritméticas com constantes, entre outras; • Exemplos: MOV R, Op MOV AL, 22H ;Copia o valor hexadecimal 22 para o registrador AL – 1 byte de tamanho; MOV EBX, 33445566H ;Copia o valor hexadecimal 33445566 para o registrador EBX – 32 bits; 35
  • 36. Modo Imediato OpCode Operando 1010H 00110101H A 35 4 bits 8 bits • JMP OP ;contador de instrução recebe o operando • JMP = JUMP = SALTO • A instrução tem tamanho de 12 bits • A instrução em binário é 101000110101 • A instrução em hexadecimal é A35 • Portanto, a instrução JMP OP armazena o valor 35 no contador de instrução; 36
  • 37. Modo Imediato OpCode R Operando 0101H 0011H 00000111H 5 3 07 4 bits 4 bits 8 bits • MOV R, Op ;o registrador R recebe o valor do Operando • A instrução tem tamanho de 16 bits • A instrução em binário é 0101001100000111 • A instrução em hexadecimal é 5307 • Portanto, a instrução MOV R, OP armazena o valor 07 no registrador 3; 37
  • 38. Modo Direto • O campo operando indica o endereço de memória onde está o dado; • Requer apenas uma referência à memória principal para buscar o dado; • O dado deve ser transferido do dispositivo de entrada para a memória principal; • Variável de programa: quando um dado varia de valor a cada execução do programa. Representa simbolicamente o endereço do dado; • EXEMPLO 38
  • 39. MEMÓRIA Modo Direto C1 8B OpCode Operando 11110111 000000000000000011000001 F7 0000C1 8 bits 24 bits • LDD OP ;o registrador R0 recebe o operando • A instrução diz: Armazene no registrador R0 o valor cujo endereço de memória é o C1; • A instrução tem 32 bits; • A instrução em binário é: • 11110111000000000000000011000001 • A instrução em hexadecimal é: F 7 0 0 0 0 C 1 • C 1 é o endereço da memória onde o dado está armazenado; 39 • O valor armazenado em C1 é 8B;
  • 40. Modo Direto MEMÓRIA OpCode Operando 0111 00 111010 3B 05A 7 3B 4 bits 8 bits • LDA OP ;O registrador R recebe o operando • Após a execução da instrução, uma cópia do valor armazenado na memória, no endereço indicado no campo operando, será armazenado no registrador R; • A instrução tem 12 bits; • A instrução em binário é: 0 1 1 1 0 0 1 1 1 0 1 0; • A instrução em hexadecimal é: 73B; • 3B contém o valor 05A; 40 • Então, R = 05A;
  • 41. Modo Direto OpCode Operando1 Operando2 B 5C 3B 0111 01011100 00111011 4 bits 8 bits 8 bits • ADD OP1, OP2 ;Somar Op1 com Op2 armazenando o resultado em OP1 • A instrução em binário é: 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1; • A instrução em hexadecimal é: B5C3B; Antes Depois • A instrução tem 20 bits; MEMÓRIA MEMÓRIA • 5A: 000001011010 • 103: 000100000011 3B 05A 05A 41 5C 103 15D
  • 42. Modo Indireto • O campo operando representa o endereço de uma célula de memória; • O conteúdo da célula de memória NÃO É um dado, mas sim OUTRO endereço de memória; • Usa mais ciclos de memória para buscar o dado; • PONTEIRO: é o endereço intermediário, indica ou aponta para a localização do dado; 42
  • 43. Modo Indireto OpCode Operando 01010011 000000000000000011000001 53 0000C1 8 bits 24 bits • LDI OP ;O registrador R0 recebe o operando; • C1: contém o endereço da memória principal onde está armazenado, de fato, o valor a ser manipulado; MEMÓRIA C1 8B 43 8B 42
  • 44. Modo Indireto OpCode Operando 0100 01110100 4 74 4 bits 8 bits • LDA OP ;O registrador R recebe o operando MEMÓRIA 74 05D 44 5D 14A
  • 45. Identificação do Modo de Enderaçamento 1. Cada código de operação estabelece: • Tipo da instrução; • Modo de endereçamento; 2. A instrução tem um campo específico para indicar o modo de enderaçamento: OpCode + Modo + Operando; 45
  • 46. Comparação entre os Modos de Enderaçamento Direto, Indireto e Imediato • Modo indireto: não requer acesso à MP, velocidade de execução rápida; • Modo direto: requer apenas um acesso à MP, velocidade de execução média; • Modo indireto: requer dois acessos à MP, velocidade de execução lenta; 46
  • 47. Comparação entre os Modos de Enderaçamento Direto, Indireto e Imediato MODO OPERANDO VANTAGENS DESVAN TAGENS Indadequado para Imediato Contém o dado Execução rápida uso com variáveis Desperdício de Contém o Flexibilidade no acesso a Direto tempo se o dado é endereço variáveis um valor fixo Contém o Manuseio de vetores e Muitos acessos à 47 Indireto endereço do usado como ponteiro memória principal endereço
  • 48. Por Registrador • Usa-se registradores no lugar da memória principal; • Execução rápida pois o dado encontra-se no registrador; • Exemplo: • Escrever, em linguagem assembly, no modo de endereçamento direto, as instruções do seguinte trecho de programa em linguagem de médio nível: DO i=1 TO 100 O código lê dois valores e soma-os cem vezes. READ a,b Do = faça x=a+b To = para End; Read = ler 48 End = fim i, x, a e b = variáveis
  • 49. 14 linhas de código Por Registrador 200 ciclos de memória: 100 para leitura GET L ;L = 100 (L de Loop) 100 para escrita LDA L ;R0 = L SUBM 0 ;R0 = R0 – 0 (100 – 0) In STA i ;i = R0 (i=100) JZ Fim ;se R0 = 0 então vá para Fim GET a ;lê o valor do dado que está no endereço a GET b ;lê o valor do dado que está no endereço b LDA a ;R0 = a ADD b ;R0 = R0 + b STR x ;x = R0 LDA i ;R0 = i DCR ;R0 = R0 – 1 (i+1) LD = load (carregamento) 49 DCR = decremento JMP In ;vá para In SUB = subtração Fim HLT ;pare
  • 50. Por Registrador Escrever o mesmo programa no modo de endereçamento por registrador: MOV R6, 64 ;R6 = 100 In DCR R6 ;R6 = R6 – 1 (decrementa cem vezes) JZ R6, Fim ;se R6 = 0 vá para o Fim GET a ;obtém o valor do dado que está no endereço a GET b ;obtém o valor do dado que está no endereço b MOV R8, a ;R8 = a ADD R8, b ;R8 = R8 + b MOV b, R8 ;x = R8 JMP In ;vá para In 10 linhas de código 50 Fim HLT ;pare
  • 51. Por Registrador • Dois modos de endereçamento por registrador: • DIRETO: contém o dado a ser manipulado; • INDIRETO: contém o endereço de uma célula de memória onde o dado se encontra; • VANTAGENS: • Execução rápida • Economia de espaço • Só é vantajoso se o modo proporcionar redução de ciclos de memória; • As vantagens nem sempre são aplicáveis e por isso podem 51 se tornar desvantagens;
  • 52. Por Registrador • DESVANTAGEM: • Em arquiteturas CISC: • Dificuldade em definir quais dados serão armazenados no registrador e quais na memória principal: quem faz isso é o compilador e ocorre devido aos poucos registradores existentes e aos muitos dados que devem ser manipulados; • Exemplos: • ADD registrador, registrador • ADD registrador, memória 52 • ADD registrador, registrador, registrador
  • 53. Modo Indexado • Manipulação de endereços de acesso a elementos de tipos especiais de dados; • Os endereços são ponteiros para os elementos; • Exemplo: vetores e outras estruturas de dados; • Indexado: obtém-se o endereço do dado de um elemento por meio de seu índice; • Endereço = campo operando + valor contido no registrador de índice; 53
  • 54. Modo Indexado • Exemplos de instruções usadas no modo indexado: • MVI RX, OP ;RX = OP (mover) • LDA RX, OP ;ACC = OP + RX (carregar) • STA RX, OP ;OP + RX = ACC (armazenar) • ADD RX, OP ;ACC = ACC + (OP + RX) (somar) • JMP OP ;CI = OP • JZR RX, OP ;CI = OP SE RX = 0 • DCR RX ;RX = RX – 1 (decrementar) • INC RX ;RX = RX + 1 (incrementar) • END ;pare 54
  • 55. Assembly • Linguagem de máquina: • programa executável direto pelo hardware; • Conjunto contínuo de sinais elétricos (0s e 1s); • Complexa e difícil; • Tela azul do windows: é uma imagem (dump) da memória do sistema em um dado instante. A imagem é uma sequencia de algarismos hexadecimais com seu respectivo endereço e o conteúdo de alguns registradores; • Uma linha de código em hexadecimal produz várias linhas código em linguagem de máquina; 55
  • 56. Assembly • Assembly é uma linguagem de montagem ou linguagem de símbolos alfabéticos, em que os códigos hexadecimais são programados como símbolos, exemplo: ADD = 011; • PASCAL: X := A + B + C; • Programa em HEXADECIMAL: • 1234 • 324 • 425 • 226 • Programa em linguagem de máquina: • 000100100011 • 001100100100 • 010000100101 • 001000100110 56
  • 57. Assembly • Programa em lingaugem de montagem: • PROG SOMA • LDA A • ADD B • SUB C • STR X • FORMATO DE UMA INSTRUÇÃO EM ASSEMBLY rótulo sigla operandos ;Comentários label mneumonic operands ;comment 57
  • 58. Assembly • Rótulo: campo opcional, indica um endereço significativo no programa, como, por exemplo, o início do programa; • Sigla: campo obrigatório, código da operação da instrução; • Operandos: símbolos representativos dos endereços de memória ou registradores; • Comentários: campo opcional, comentário sobre a instrução; • A linguagem Assembly não é diretamente executável em hardware; • Por este motivo, precisa de um programa tradutor, o MONTADOR, que traduz os símbolos para linguagem de 58 máquina;
  • 59. Assembly • O Montador é um programa desenvolvido para atender às particularidades de um processador específico, exatamente àquele em que será executado (dependente do hardware); • Um montador para o Pentium não funcionará para o PowerPC: o formato e o conjunto das instruções são diferentes, assim como o código gerado; • Utiliza de modo mais eficiente os recursos do hardware; • Na maioria das vezes, apenas o criador do montador sabe realmente como ela funciona e como os programas devem ser escritos em assembly; • Manutenção desses programas são caras por não haver 59 especialistas na área;
  • 60. Assembly CÓDIGO Programa original em linguagem de montagem FONTE MONTAGEM MONTADOR 60 CÓDIGO Programa resultante, em linguagem binária OBJETO
  • 61. Assembly • O que faz o montador? • Substitui códigos de operações simbólicos pelos valores binários das operações. Ex.: LOAD = 00101101 • Substitui endereços simbólicos pelos valores binários dos endereços. • Reseva espaço de memória para armazenar as instruções e dados; • Converte os valores constantes por valores binários; • Confere as palavras chaves reservadas; • Verifica erros no programa; 61
  • 62. Assembly • O montador sempre examina, instrução por instrução, verificando se elas estão escritas corretamente e se os campos estão definidos de acordo com a estrutura da linguagem de montagem; • Depois o montador cria uma tabela de símbolos de códigos de operação e uma tabela de símbolos de endereços; • Cada operação e cada endereço é uma entrada da tabela; • Métodos de busca em tabelas são implementados de forma que estas sejam feitas eficientemente, tornando extremamente rápido o processo de montagem; 62