Escolar Documentos
Profissional Documentos
Cultura Documentos
(micro-arquitectura)
atributos visveis ao programador:
I.S.A.
tamanho da palavra (bits)
registos
Memria
Instrues
Sequncia de funes
lgicas e aritmticas
Resultados
Interpretador de
instrues
Sinais de controlo
Dados
Funes lgicas e
aritmticas de propsito
geral
Resultados
Controlpath
Processador
Input
Controlo
Registos
Datapath
Memria
ALU
Output
fetch
decode
execute
Memria
IP
1000
IR
XXXX
Registos
U. C.
A.L.U.
XXXX
1000
1001
1002
1003
1004
1005
1006
1007
10
fetch
decode
execute
Memria
IP
1000
1001
IR
XXXX
Registos
U. C.
XXXX
??
A.L.U.
1000
1001
1002
1003
1004
1005
1006
1007
11
fetch
decode
execute
Memria
IP
1001
IR
XXXX
Registos
U. C.
A.L.U.
XXXX
1000
1001
1002
1003
1004
1005
1006
1007
12
Nveis de abstraco
Computador como uma pilha de mquinas virtuais.
Cada nvel usa os servios disponibilizados pelo nvel abaixo.
Cada utilizador usa o nvel mais conveniente para a tarefa a resolver.
Aplicao
Linguagens de alto-nvel (HLL)
Assembly
Sistema Operativo
software
hardware
Micro-arquitectura
Lgica Digital
13
Nveis de abstraco
Compiladores convertem um
programa para um nvel inferior
Interpretadores executam
instruo a instruo um
programa de um nvel superior
Compilador
C
Assemblers convertem um
programa de assembly para o
nvel mquina
Linkers ligam vrios mdulos de
um mesmo programa, para gerar
um nico executvel
Loaders carregam um ficheiro
executvel para memria
swap(int v[],int k)
{ int temp;
temp=v[k];
v[k]=v[k+1];
v[k+1]=temp;
}
swap:
muli
add
lw
lw
sw
sw
jr
$2,$5,4
$2,$4,$2
$15,0($2)
$16,4($2)
$16,0($2)
$15,4($2)
$31
Assembler
00000000101000010000000000011000
00000000100011100001100000100001
10001100011000100000000000000000
10001100111100100000000000000100
10101100111100100000000000000000
10101100011000100000000000000100
00000011111000000000000000001000
14
Nveis de abstraco
Ling. Alto nvel
Compilador
outros
mdulos
Assembly
bibliotecas
de funes
Assembler
Ficheiro objecto
desenvolvimento
Linker
executvel
execuo
Loader
Memria
15
Compilao
Mdulo 1
int total=0;
main ()
{ int i;
i = 10;
soma (i);
}
.globl
total:
main:
pushl
movl
pushl
call
leave
ret
Mdulo 2
extern int total;
void soma (int p)
{
total += p;
}
Compilao
.long 0
%ebp
%esp, %ebp
$10
soma
.globl
soma:
pushl
movl
movl
addl
movl
leave
ret
%ebp
total, %eax
%esp, %ebp
8(%ebp), %eax
%eax, total
16
Montagem (Assembler)
Ficheiros Objecto
00000000 <main>:
0: 55
1: 89 e5
c: 6a 0a
e: e8 fc ff ff ff
13: c9
14: c3
TABELA DE SMBOLOS
soma
00000000 <soma>:
0: 55
1: a1 00 00 00 00
6: 89 e5
8: 03 45 08
b: a3 00 00 00 00
10: c9
11: c3
TABELA DE SMBOLOS
total
17
Linker
Ficheiro Executvel
080482f4 <main>:
80482f4: 55
80482f5: 89 e5
8048300: 6a 0a
8048302: e8 05 00 00 00
8048307: c9
8048308: c3
8048309: 90 90 90
0804830c <soma>:
804830c: 55
804830d: a1 74 93 04 08
8048312: 89 e5
8048314: 03 45 08
8048317: a3 74 93 04 08
804831c: c9
804831d: c3
18
Sumrio
Tema
Hennessy [COD]
Arquitectura vs.
Organizao
Stallings [COA]
Bryant[CS:APP]
Mquina de von
Neumann
Stored Program
Sec 1.8
Organizao de von
Neumann
Tipos de instrues
Converso entre
nveis
Sec. 3.2
19