Você está na página 1de 31

Aula 17 Conjunto de Instrues

Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG

Converso

Modificam o formato dos dados, utilizam tabelas de converso. Exemplo:

Converso de binrio para decimal

Entrada/ Sada

Podem ser instrues especficas para E/S Instrues de movimento de dados (mapeamento de memria) Podem ser executadas por um controlador separado (DMA)

Controle do Sistema

Instrues privilegiadas. Para uso do sistema operacional. Geralmente manipulam registradores de controle. CPU precisa estar em estados especficos

Ring 0 no 80386+ Modo Kernel

Transferncia de Controle

Alteram a execuo sequncial do programa. Podem ser desvios, saltos ou chamadas de rotinas. Exemplos:

JUMP JSR CALL RETURN HALT

Transferncia de Controle

Desvio (Branch)

Incondicional: altera o endereo da prxima instruo determinada

( PC <- endereo)

Condicionais: se condio verdadeira, altera o endereo da prxima instruo


SE (condio) PC <- endereo SENO PC <- PC +1 Desvia para endereo_x se o resultado zero

Exemplo:

Desvio Condicionais operao ADD

Com 2 bits de controle, 4 resultados possveis: (ZERO, POSITIVO, NEGATIVO, OVERFLOW) 4 tipos de desvio:

BRP X BRN X BRZ X BRO X

Transferncia de Controle

Salto (Skip)

Incrementa e salta se zero (increment and skip if zero) 301 302 303 Enquanto R1 no for Zero, incrementa R1, 304 ISZ R1 E realiza a instruo da posio seguinte 305 Branch 301 (305) que neste exemplo, faz com que o programa retorne para a posio 301, 306 ADD A

formando um loop. Quando R1 = 0, pula a instruo da posio 305 e executa a instruo da posio 306

Transferncia de Controle

Chamada de Procedimentos

Instrues de chamada Instrues de retorno

CALL X : Rn <- PC +1 PC <- X

Chamada de Procedimentos

Endereo de retorno armazenado

Registradores Incio da rea de memria do procedimento Topo da pilha

Impedem a chamada de procedimentos recursivos

Passagem de Parmetros Impedem a



chamada de Registradores procedimentos Memria recursivos Pilha: o conjunto de dados (parmetros + endereos) chamado registro de ativao

Instrues de chamada de procedimento

Procedimento = subprograma incorporado em um programa maior

Pode ser invocado (chamado) em qualquer ponto do programa Instrui o processador a executar todo o procedimento e ento, retornar ao ponto em que ocorreu a chamada. economia e modularidade

Controle de procedimentos

2 instrues de desvio:

Instruo de chamada: desvia a execuo da instruo corrente para o incio do procedimento. Instruo de retorno: provoca o retorno da execuo do procedimento para o endereo em que ocorreu a chamada.

Instruo de Desvio

Procedimentos Aninhados

Observaes

Um procedimento pode ser chamado de mais de um ponto do programa. Uma chamada a um procedimento pode ocorrer dentro de um procedimento. Isso possibilita o aninhamento de procedimentos, at uma profundidade arbitrria. A cada chamada de procedimento corresponde um retorno, para o programa que efetuou a chamada.

Pilhas

Conjunto ordenado de elementos, dos quais apenas um pode ser acessado em dado instante (TOPO DA PILHA) LIFO (last-in-first-out) Operaes bsicas sobre pilhas:

PUSH POP Operao unria: operao sobre o elemento do topo da pilha, substitui o elemento do topo pelo resultado. Operao binria: efetua a operao sobre os dois elementos no topo da pilha. Retira os dois elementos do topo da pilha. Coloca o resultado da operao no topo da pilha.

Uso de Pilha

Endereo de retorno

Comumente armazenado:

Em um registrador

CALL X :

RN <- PC+1 PC <- X

No incio da rea de memria do procedimento

CALL X:

X <- PC +1 PC <- X+1

No topo da pilha

Endereo de retorno

Comumente armazenado:

Em um registrador

I m p e d e m

CALL X :

RN <- PC+1 PC <- X

No incio da rea de memria do procedimento

CALL X:

p r o c e d i m e n t o s

r e e n t r a n t e s

X <- PC +1 PC <- X+1

No topo da pilha

Passagem de parmetros

Registradores Memria Pilha

Registro de Ativao: Conjunto de dados armazenados na pilha em uma chamada de procedimentos, incluindo parametros e endereo de retorno.

Implementao da Pilha

Apontador de topo da pilha Base da pilha (normalmente no endereo mais alto do bloco reservado para a pilha) Limite da pilha (no endereo mais baixo)

Linguagem de Montagem

Considere um comando simples: N =I+J+K

Contedo inicial: I=2, J=3 e K=4 Programa carregado a partir da posio de memria de endereo 101 (h) 4 variveis armazenadas a partir do endereo 201. O programa consiste de 4 instrues

Carrega o contedo da posio de endereo 201 em AC Adiciona o contedo da posio de endereo 202 a AC Adiciona o contedo da posio de endereo 203 a AC Armazena o contedo de AC na posio de endereo 204

Endereo 101 102 103 104 201 202 203 204

Contedo 0010 0010 0000 0001 0001 0010 0000 0010 0001 0010 0000 0011 0011 0010 0000 0100 0000 0000 0000 0010 0000 0000 0000 0011 0000 0000 0000 0100 0000 0000 0000 0000

Tedioso e propenso a erros!

Melhoria: escrever em notao hexadecimal:


Endereo 101 102 103 104 Contedo 2201 1202 1203 3204

201 202
203 204

0002 0003
0004 0000

Um pouco mais fcil: linguagem simblica


Endereo 101 102 103 104 Contedo LDA 201 ADD 202 ADD 203 STA 204

201 202
203 204

DAT 2 DAT 3
DAT 4 DAT 0

Ainda necessrio:

Fornecer endereo absoluto para cada palavra Se algum dia alterar o programa, os endereos de todas as palavras subsequentes tero de ser alterados. Soluo: Usar endereos simblicos.

Linguagem de Montagem
Rtulo FORMUL Operao LDA ADD ADD STA Operando I J K N

I J
K N

DATA DATA
DATA DATA

2 3
4 0

Traduzidos para linguagem de mquina por um montador.

Atividade

Procurar pela ISA - Instruction set Architecture dos processadores Pentium ARM

Exerccios de Fixao
23- O que so operaes de converso? 24- O que so operaes de controle do sistema? 25- Qual a diferena conceitual entre saltos e desvios? 26- Defina desvio incondicional e desvio condicional. 27- Explique o funcionamento da instruo ISZ (Increment and skip IF zero). Sugira uma utilizao para ela.

28- Quais as 2 instrues necessrias para realizar chamada de procedimentos? 29- Como realizada a chamada de procedimentos aninhados com pilha? Porque pilhas so preferncias registradores e memria para gerenciar a chamada de procedimentos e a passagem de parmetros? 30 - Resolver os exerccios 9.8, 9.9, 9.10, 9.14, 9.16, 9.17 e 9.19 do Stallings ( 5 o Edio)