Beruflich Dokumente
Kultur Dokumente
Organizao de Computadores
Contedo
1. 2. 3.
4.
5. 6. 7. 8. 9. 10. 11. 12.
13.
Introduo Operaes executadas pelo hardware da mquina Operandos do hardware da mquina Representao de instrues Instrues de desvio Suporte a procedimentos pelo hardware da mquina Alm dos nmeros Outros estilos de endereamento Execuo de um programa Exemplo para juntas as peas Lendas e falhas Consideraes finais Bibliografia
1. Introduo
Linguagem de mquina instrues Conjunto de instrues vocabulrio Metodologia: aumento gradativo da complexidade Linguagens de mquinas: mais parecidas com dialetos do que com lnguas diferentes (princpios semelhantes) Objetivos da linguagem:
Nesta unidade: Linguagem C, Assembly, Linguagem de Mquina Instrues: MIPS (NEC, Nintendo, Silicon Graphics, Sony) Instrues do Z80 (laboratrio)
Instruo - Definio
um comando referente a uma operao elementar que o computador seja capaz de executar. Cada modelo de computador dispe de certo conjunto de instrues, que constituem o seu repertrio de instrues. O nmero de instrues que constituem o repertrio varia desde algumas dezenas at mais de uma centena.
Cdigo de operao ou OPCODE: identifica a operao a ser realizada pelo processador. o campo da instruo cuja valor binrio identifica ( o cdigo binrio) da operao a ser realizada. Formato de instrues de um operando:
Cdigo de operao
Operando
Formato de Instrues
O nmero de bits do cdigo de operao depende de quantas instrues tem o set de instrues da mquina. Ex: um processador com 256 instrues teria necessidade de 8 bits para representar o cdigo de operao
Formato de Instrues
Outros sistemas possuem cdigo de operao de tamanho varivel. Por exemplo, o IBM/370 tem: 166 instrues com cdigo de operao de 8 bits. 11 instrues com cdigo de operao de 16 bits.
Formato de Instrues
Operando(s) - o campo da instruo cujo valor binrio sinaliza a localizao do dado (ou o prprio dado) que ser manipulado (processado) pela instruo durante a operao.
Tipos de Instrues
Cdigo de operao
Cdigo de operao
Operando
Tipos de Instrues
Transferncia de dados Uso dos recursos da CPU Desvio do fluxo de execuo I/O
2. Operaes do Hardware
Instrues so mais rgidas que em linguagem de alto nvel sempre 3 operandos (MIPS). Simplifica o hardware
Exerccios
1.
2.
3.
Um programa em C um pouco mais complexo que o anterior apresentado a seguir, e contm cinco variveis:
f (l h) (b c);
a) b)
Qual o cdigo MIPS produzido pelo compilador? Qual o cdigo Z80 produzido pelo compilador?
Em baixo nvel no h o conceito de varivel Registradores conjunto especial de localidades de memria No Z80 os registradores podem ser de 8 ou 16 bits: 8 bits: A, B, C, D, E, F, H, I 16 bits: IX e IY 8 bits: palavra (word) Operandos: sempre um registrador para as operaes aritmticas Registrador A: acumulador (acc) Nmero de registradores influencia no ciclo de clock
Quando os registradores internos no so suficientes memria (milhes de posies). Z80 Aritmtica ocorre apenas nos registradores. Necessidade de instrues de transferncia (load):
Memria
(carregar)
Sintaxe:
ld
A,(nn)
Atribui
Exerccio
Supor que a uma array (matriz) de 100 posies. As variveis g e h esto armazenadas nos registradores B e C. O endereo base da array est armazenado em HL. Traduzir para assembly:
g h a[8];
Armazenamento
ld (nn),A Atribui a posio de memria indicada por nn uma cpia do valor existente no registrador A
Exerccio
Supor que varivel h esteja associada ao registrador C e que o endereo-base de a esteja armazenado em HL. Qual o cdigo de montagem do Z80 para o comando de atribuio seguinte, escrito em C:
a[12] h a[8];
Interface Hardware/Software
Muitas vezes existem mais variveis que registradores Variveis mais freqentemente usadas registradores. As restantes memria. Processo de colocar variveis menos usadas na memria: vazamento de registradores (spilling registers). Registradores so mais rpidos que memria.
Humanos: base 10. Computadores: base 2. 12310=11110112. Instrues: nmeros. Z80 Instrues de 8, 16, 24 ou 32 bits. Cada instruo contm: opcode, operandos. Registradores no Z80:
H um conflito entre o desejo de manter todas as instrues do mesmo tamanho e o desejo de ter um nico formato de instruo. Todas as instrues no Z80 possuem o mesmo formato: tamanhos diferentes Todas as instrues no MIPS possuem o mesmo tamanho: formatos diferentes
Computadores modernos
1. 2.
Instrues so representadas como nmeros. Programas podem ser armazenados na memria. Programa armazenado na memria (diversidade):
Programa de contabilidade. Editor. Compilador. Dados. Texto. Programa em C.
5. Instrues de Desvio
Computadores: capacidade de tomar decises baseadas nos dados. Linguagens de alto nvel: if e goto. Z80: jp Veja apostila do laboratrio:
Exerccios
1.
b)
if (a==10) { a=a+1; b=10; } else { a=a-1; b=20; }
c)
for (i=0; i<10; i++) { a=a+1; c=10; }
Procedimento ou sub-rotina:
Colocar os parmetros em lugar acessvel ao procedimento. Transferir controle p/ o procedimento. Garantir recursos de memria necessrios execuo do procedimento. Realizar a tarefa. Colocar o resultado acessvel ao programa que chamou o procedimento Retornar o controle ao ponto de origem
Passagem de parmetros
Colocar argumentos extras. Colocar retornos extras. Salvar registradores. Variveis locais.
Procedimentos no Z80
Exerccios
Procedimentos Aninhados
Mais difceis. Chamam outros procedimentos. Pior: chamam eles mesmos (recursivos). Como resolver?
Pilha: tambm usada para guardar variveis locais que no cabem nos registradores. Por exemplo: arrays Variveis em C:
Posio de memria. Tipo: int ou char Classe de armazenamento: automtica ou esttica Automticas: locais a um procedimento. Estticas: sobrevivem a um procedimento, declaradas fora de procedimentos.
7. Alm do nmeros
Computadores: inicialmente nmeros. Depois: textos. Muito usado: cdigo ASCII. O Z80 no possui strings. Para os exerccios seguintes usar-se- como strings os cdigos em hexadecimal do teclado. Veja detalhes de como tratar strings no livro do Patterson-Hannessy pg 78
Exerccios
O procedimento strcpy copia um string y num string x, usando o byte null como conveno de trmino de string. Faa o procedimento na linguagem do Z80 fazendo o teste de parada com o nmero zero.
void strcpy(char x[ ], char y[ ]) { int i; i = 0; while (x[i] = y [i] != 0) i = i+1; }
endereamento direto; endereamento indireto; endereamento imediato; endereamento indexado. Instrues de Transferncia de Dados
9. Execuo de um programa
Compilador
Transforma C Assembly Linguagem de alto nvel: maior produtividade. Antigamente: escrito em Assembly. Atualmente: escrito em linguagem de alto nvel.
Montador
Assembly Linguagem de mquina. MIPS: O assembly incrementa artificialmente o set de instrues. Pseudo-instrues: no existem na mquina, o montador as cria para melhorar os recursos do Assembly. Pseudo-instruo move: move $t0,$t1 O montador transforma em: add $t0,$zero,$t1 Montadores: aceitam nmeros em diferentes bases: decimal, binrio, hexadecimal. Montador: transforma o programa em linguagem de mquina num arquivo objeto combinao de:
instrues em linguagem de mquina; dados; informaes necessrias para carregar o programa adequadamente na memria.
Ligador (Linker)
Mudana em um programa, que parte de um conjunto: tem que mudar todo o programa? No. S uma parte recompilada. Cada programa j pode estar compilado (em linguagem de mquina). Um programa chamado ligador monta os programas como um nico programa.
Ligador - 3 passos
1.
2.
3.
Colocar os mdulos de cdigo e dados simbolicamente na memria Determinar os endereos dos labels de dados e de instrues. Resolver as referncias externas e internas. Usa, para tal, as informaes do programa objeto. O ligador monta o arquivo, colocando os endereos certos. Gera um arquivo executvel.
Carregador (Loader)
1. 2. 3. 4. 5.
6.
Realiza o carregamento do programa na memria. No UNIX: Leitura do cabealho. Criao de espao de cd. e dados. Copiar instr. e dados para a memria. Copiara os par. p/ a pilha (quando houver). Iniciar o SP (stack pointer). Desviar para a rotina de inicializao
O procedimento swap.
Trocar dois elementos consecutivos do array.
Na traduo de qualquer programa em C para a linguagem de mquina, devero ser seguidos os seguintes passos:
1. 2. 3.
Alocar registradores para as variveis. Produzir cdigo para o procedimento. Preservar os registradores nas chamadas.
Lenda Instrues mais poderosas significam melhor performance Falha esquecer que endereos de palavras consecutivas com endereamento a byte no diferem de uma unidade Falha usar um ponteiro para uma varivel automtica fora do procedimento onde ela foi definida.
Princpios bsicos do hardware: 1. A simplicidade favorecida pela regularidade 2. Quanto menor, mais rpido 3. Um bom projeto demanda compromisso 4. Torne o caso comum mais rpido
13. Bibliografia
Patterson, David A. e Hennessy, John L. Organizao e Projeto de Computadores: A Interface Hardware/Software. Ed. LTC, 452. Ed., 2000, Rio de Janeiro.