Sie sind auf Seite 1von 45

Linguagem de Mquina

Organizao de Computadores

Profs.: Neil Paiva Tizzo Lideir Viana

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:

Facilitar construo do hardware e compiladores Maximizar a performance Minimizar o custo

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.

Formato das Instrues

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

Trs formatos tpicos de instruo:

Cdigo de operao
Cdigo de operao

Operando

Cdigo de operao Operando 1 Operando 2

Tipos de Instrues

As instrues de um computador, podem ser classificadas de acordo com a sua funcionalidade:


Transferncia de dados Uso dos recursos da CPU Desvio do fluxo de execuo I/O

2. Operaes do Hardware

Todo computador deve realizar operaes aritmticas fundamentais


MIPS: add a,b,c ab+c Z80: add a,b aa+b A princpio denotaremos a, b e c como variveis

Instrues so mais rgidas que em linguagem de alto nvel sempre 3 operandos (MIPS). Simplifica o hardware

Exerccios
1.

criar uma seqncia de instrues para somar a, b, c e d.


Usando instrues MIPS Usando instrues do Z80

2.

Traduzir para o MIPS e para o Z80 o programa em C abaixo:


a=b+c; d=a-e;

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?

3. Operandos do hardware de mquina


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

3. Operandos do hardware de mquina

Muitas vezes: existem variveis demais.

Arrays (matrizes), estruturas etc.

Quando os registradores internos no so suficientes memria (milhes de posies). Z80 Aritmtica ocorre apenas nos registradores. Necessidade de instrues de transferncia (load):

Memria Registradores Registradores Memria

Memria

Posies de memria: nmeros. 1 byte por posio. Memria Registradores


ld

(carregar)

Sintaxe:
ld

A,(nn)

Atribui

ao registrador A o valor da posio de memria indicada por nn (entre 0000H e FFFF H)

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];

Obs: a partir de agora usaremos a seguinte notao:


Letras maisculas registradores Letras minsculas variveis

Armazenamento

No Z80 tanto o armazenamento quanto o carregamento so feitos pela instruo ld


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.

4. Representao das instrues


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:

A (acumulador) 8 bits B, C, D, E, H, L 8 bits F (flags) 8 bits IX, IY (endereamento) 8 bits

Instrues em linguagem de mquina 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

Instrues em linguagem de mquina no Z80

Veja apostila do laboratrio, disponvel em:

ANEXO III - Tabela de OpCodes

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:

Saltos Condicionais e Incondicionais

Exerccios
1.

Transformar para linguagem de montagem do Z80:


a)
if (a==10) a=a+1; else a=a-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; }

6. Suporte a procedimentos pelo hardware da mquina

Procedimento ou sub-rotina:

Estruturao de programas. Mais fcil de entender. Reutilizao. Dividir em partes menores.

Analogia Agente Secreto

Recebe o plano. Adquire os recursos. Executa. Limpa pistas. Devolve o resultado.

O programa e o procedimentos precisam

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

Forma tradicional: usar a pilha. Estrutura do tipo LIFO. Usada para:


Colocar argumentos extras. Colocar retornos extras. Salvar registradores. Variveis locais.

Colocar na pilha: push. Retirar da pilha: pop.

Procedimentos no Z80

Veja apostila do laboratrio:

Instrues de Rotao e Funes

Exerccios

Transforma num procedimento o trecho de programa abaixo:


int examplo (ing g, int h, int i, int j) { int f; f = (g + h) (i + j); return f; }

Procedimentos Aninhados

Mais difceis. Chamam outros procedimentos. Pior: chamam eles mesmos (recursivos). Como resolver?

Alocao de espao para novos dados

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; }

8. Outros estilos de endereamento no Z80

Modo de endereamento: a forma de sinalizar a localizao de um dado. Pode ser:


endereamento direto; endereamento indireto; endereamento imediato; endereamento indexado. Instrues de Transferncia de Dados

Veja apostila do laboratrio:

9. Execuo de um programa

So necessrios quatro passos para transformar um programa em C linguagem de mquina

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

10. Exemplo Para Juntar as Peas

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.

11. Lendas e falhas

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.

12. Consideraes finais

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.

Das könnte Ihnen auch gefallen