Você está na página 1de 6

LEI Sistemas de Computao 2013/14

Execuo detalhada de instrues


TPC3 + Guio Teatral

Alberto Jos Proena

------------------------------------------------------------------------------------------------------------------------------------------------
Objectivos
Treinar as capacidades de visualizao de terminologia e conceitos que descrevem o funcionamento de
um sistema de computao na execuo de cdigo.
Para atingir estes objetivos vai-se realizar um exerccio experimental com estudantes-atores, em contra-
relgio: usando 8 atores: "banco de registos", "ALU", "unidade de controlo do processador", "descodificador
de instrues", "memria", "barramento de endereos", "barramento de dados", e "barramento de controlo".
Estes iro representar (teatralmente) a execuo de um conjunto de instrues em linguagem mquina, o
corpo de uma funo em C compilada e montada para uma arquitetura IA-16.
Como preparao para esta pea de teatro, so propostos alguns exerccios sob a forma de TPC, os quais
devero ser resolvidos e entregues no incio da prxima sesso TP, para discusso durante essa sesso. A
pea de teatro ser na sesso TP seguinte.
------------------------------------------------------------------------------------------------------------------------------------------------
1. Exerccios de preparao (TPC)

1. Considere a execuo da instruo em assembly addw %bx, -8(%bp), (depois de "montada" em
linguagem mquina para a arquitetura IA-16 definida neste TPC) desde que o processador terminou a
instruo anterior. Essa instruo d indicao ao processador para adicionar 2 operandos de 16 bits
1 colocado em registo e outro em memria e guardar o resultado de volta nas mesmas clulas de
memria onde antes estava guardado o 2 operando. O 1 operando est no registo %bx, enquanto o 2
operando est localizado em memria a partir do endereo calculado pela soma do contedo do registo
%bp com a constante (-8). Considere os valores apresentados neste enunciado nas pg. 4 e 5.
Indique, cronologicamente e em binrio ou hexadecimal, toda a informao que ir circular nos 3
barramentos (ver sua descrio no exerccio 2.) durante a execuo integral desta instruo (no
esquecer que o processador tem de ir buscar a instruo memria). Considere que o barramento de
dados transporta a informao de/para a memria sob a forma little endian, i.e., o byte menos
significativo do barramento refere-se ao contedo da clula de memria com o endereo mais baixo.
Indique tambm todos os registos e todas as clulas de memria que foram modificados com a
execuo desta instruo.

2. Considere a operao de montagem em binrio dessa mesma instruo em assembly de acordo com
as regras definidas neste enunciado (inclui pg. 3): addw %bx, -8(%bp).
Mostre como seria esta instruo em linguagem mquina deste IA-16 (em hexadecimal, byte a byte),
depois de montada pelo assembler. Explique sucintamente, o processo de montagem.
2. Caraterizao da "pea de teatro"

Pretende-se com este exerccio analisar todos os passos da execuo de instrues por um processador
little endian de 16 bits (semelhante ao Intel x86), desde a busca de cada uma das instrues memria, at
sua execuo, passando pela sua descodificao.
Os principais componentes do computador sero representados por estudantes-atores, estando cada
uma/um apenas na posse da informao que lhe pertinente e durante o tempo que essa informao
existe.
TPC3: Execuo detalhada de instrues - 2
___________________________________________________________________________________________________________
AJProena /Mar'14

Caratersticas do sistema de computao e funes a desempenhar por cada estudante-ator:
1. Processador, constitudo pelas seguintes partes/atores:
a. banco de registos, responsvel pelo contedo dos 8 registos "genricos" do Intel x86 (ax, bx,
cx, dx, si, di, bp, sp) e do instruction pointer (ip); no incio do exerccio, os registos tero um
contedo pr-definido (folha com o ator; contm a lista de registos e respectivo contedo inicial,
bem como espao para escrever os novos valores dos registos);
b. ALU, responsvel por efetuar as operaes aritmticas (soma/subtrao) ou lgicas
(AND/OR/NOT) que lhe forem solicitadas, e sobre os operandos que lhe forem disponibilizados;
no fim o resultado necessita de ser armazenado algures; as operaes so feitas no quadro e
apagadas aps a sua concluso (a ALU no tem capacidade de armazenar valores);
c. unidade de controlo, responsvel por gerar todos os sinais que controlam as operaes no
exterior do processador, e ainda por dar todas as instrues para o correto funcionamento
interno do processadro; a apoi-la/o ter a colaborao de uma outra estrutura/ator (o
descodificador de instrues);
d. descodificador de instrues, com capacidade para armazenar internamente at 4 bytes com
instrues em binrio; a descodificao das instrues faz-se com base na informao
disponibilizada na pg. 3, contendo:
(i) figura com os formatos de instrues do i386,
(ii) mapa da codificao dos modos de endereamento do i386, em que a ltima coluna
mostra tambm como os registos so codificados, e
(iii) tabela com cdigos de operao das instrues mais usadas nesta pea; de notar que
este mapa dos modos de endereamento se refere a um processador de 32 bits, mas
que iremos adapt-lo nesta pea a um processador de 16 bits, com as necessrias
correes (por ex., todas as referncias a registos de 32 bits devero ser substitudas
por referncias a registos de 16 bits);
2. Memria, responsvel pelo contedo das 2
16
clulas de memria (folha com o ator; contm o
contedo de clulas numa lista de endereos previamente definidos, bem como espao para
escrever novos valores em clulas que tenham sido modificadas);
3. Barramentos de interligao entre o processador e a memria:
a. barramento de endereos, responsvel por transportar 16 bits de cada vez (em 2 folhas de
papel, 1 em cada mo contendo um valor numrico de 1 byte), e apenas durante o perodo de
tempo em que esses valores estiverem ativos no barramento;
b. barramento de dados, responsvel por transportar 16 bits de cada vez (em 2 folhas de
papel, 1 em cada mo contendo um valor numrico de 1 byte), e apenas durante o perodo de
tempo em que esses valores estiverem ativos no barramento;
c. barramento de controlo, responsvel por transportar os sinais de controlo que forem
necessrios (neste exerccio apenas sero necessrios os sinais de RD e WR).

3. Guio teatral

1. Distribuir os papis com a informao pertinente a cada um dos atores, conjuntamente com vrias
folhas de papel para que o "CPU" e a "memria" possam escrever a informao que os "barramentos"
iro transportar.
2. Considerar que o CPU acabou de executar uma instruo, e que o estado do computador o que est
representado nas folhas distribudas.
3. Simular com as/os atores a execuo de instrues at ao fim da 1 instruo de ret que encontrar.
4. (Para fazer depois da aula) Tentar recriar o cdigo em C que deu origem a esta funo compilada.
(Sugesto: d uma vista de olhos pelos slides das aulas...)

TPC3: Execuo detalhada de instrues - 3
___________________________________________________________________________________________________________
AJProena /Mar'14

Formatos de instruo












Opcode Mnemnica Comentrios
0000 00xx add
xx: ver figura acima;
requer mais bytes
0101 0yyy push
yyy: identificao de registo,
de acordo com tabela acima
0101 1yyy pop
yyy: identificao de registo,
de acordo com tabela acima
1000 10xx mov
xx: ver figura acima;
requer mais bytes
1000 110x lea
xx: ver figura acima;
requer mais bytes
1100 0011 ret

= 0
= 1
TPC3: Execuo detalhada de instrues - 4
___________________________________________________________________________________________________________
AJProena /Mar'14

Banco de registos

ax xxxx xxxx xxxx xxxx _0_ _0_ _0_ _c_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
bx xxxx xxxx xxxx xxxx _f_ _ f_ _ e_ _ f_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
cx xxxx xxxx xxxx xxxx _0_ _0_ _0_ _0_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
dx xxxx xxxx xxxx xxxx _0_ _1_ _4_ _0_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
si xxxx xxxx xxxx xxxx _8_ _0_ _8_ _0_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
di xxxx xxxx xxxx xxxx _8_ _0_ _c_ _6_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
bp xxxx xxxx xxxx xxxx _8_ _4_ _1_ _c_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
sp xxxx xxxx xxxx xxxx _8_ _4_ _1_ _4_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
ip xxxx xxxx xxxx xxxx _4_ _0_ _4_ _0_ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___

TPC3: Execuo detalhada de instrues - 5
___________________________________________________________________________________________________________
AJProena /Mar'14

Memria

0x0000 0101 1001 _5_ _9_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
... ...
0x4040 0101 0101 _5_ _5_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
1 1000 1001 _8_ _9_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x4042 1110 0101 _e_ _5_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
3 1000 1011 _8_ _b_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x4044 0100 0101 _4_ _5_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
5 0000 0110 _0_ _6_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x4046 0000 0011 _0_ _3_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
7 0100 0101 _4_ _5_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x4048 0000 0100 _0_ _4_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
9 1000 1001 _8_ _9_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x404a 1110 1100 _e_ _c_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
b 0101 1101 _5_ _d_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x404c 1100 0011 _c_ _3_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
d 1000 1101 _8_ _d_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x404e 0111 0110 _7_ _6_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
f 0000 0000 _0_ _0_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
... ...
0x8410 0010 1001 _2_ _9_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
1 0001 1111 _1_ _f_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x8412 1101 0101 _d_ _5_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
3 0010 1001 _2_ _9_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x8414 0001 0010 _1_ _2_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
5 0100 0000 _4_ _0_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x8416 0001 0100 _1_ _4_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
7 0000 0000 _0_ _0_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
0x8418 1110 1010 _e_ _a_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
9 1111 1111 _f_ _f_ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
... ...

TPC3: Execuo detalhada de instrues - 6
___________________________________________________________________________________________________________
AJProena /Mar'14

N Nome: Turma:

Resoluo dos exerccios
(Nota: Apresente sempre os clculos que efectuar no verso da folha; o no cumprimento desta regra
equivale no entrega do trabalho.)

1. Indique, cronologicamente e em bin ou hex, toda a informao que ir circular nos 3 barramentos:
addw %bx, -8(%bp)
Address Bus:


Data Bus:


Control Bus (indique apenas os sinais de controlo):


Indique tambm todos os registos e todas as clulas de memria modificados:



2. Mostre como seria esta instruo em linguagem mquina deste IA-16 (explique como l chegou)

Você também pode gostar