You are on page 1of 45

1.

Arquitectura dun computador

Estructura bsica dun computador


El 1946, A. W. Burks, H. H. Goldstine i J. von Neumann, investigadors de lInstitute for
Advanced Study, van publicar un article titulat Preliminary discussion of the logical design of
an electronic computing instrument, que va establir les bases per al disseny de computadors
que shan seguit fins al dia davui.
El disseny bsic que van proposar, que es coneix com a Arquitectura von Neumann
(Figura 1.1), estructura els computadors en tres mduls principals:

la Memria guarda els programes, que sn un conjunt de dades que es


modificaran o consultaran en executar el programa, ms un conjunt
dinstruccions que indiquen les operacions que shan de fer sobre les dades. La
memria est estructurada com un conjunt de paraules, cadascuna de les quals
s capa de guardar una instrucci o una dada individual. A la ubicaci de cada
paraula dins de la memria se li diu adrea.
la Unitat Central de Procs, processador o CPU (Central Processing Unit)
executa els programes. Al seu torn, sestructura en dos blocs: la Unitat de
Procs (UP) s el conjunt de dispositius electrnics necessaris per a executar
programes, i la Unitat de Control (UC) s un sistema seqencial encarregat de
governar la circuiteria de la Unitat de Procs.
la Unitat dEntrada/Sortida (Input/Output) permet relacionar el computador amb
lexterior, mitjanant diversos dispositius perifrics (teclat, pantalla, disc etc.)

Bus de dades
Bus dadreces
Bus de control

CPU
MEMRIA E/S
UP UC

Figura 1.1. Arquitectura von Neumann

1
Els tres mduls es comuniquen a travs de tres busos:

el Bus de Dades permet la transferncia de dades entre tots tres mduls, i la


dinstruccions des de la memria cap a la CPU.
el Bus dAdreces permet a la CPU indicar a la memria (o a la Unitat dE/S)
quina de les paraules vol llegir (obtenir-ne el valor) o escriure (modificar-ne el
valor).
a travs del Bus de Control es transmeten els senyals que possibiliten que les
tres unitats actun de manera coordinada.

Els tres mduls de larquitectura von Neumann constitueixen la circuiteria electrnica o nivell
fsic dun computador, o hardware. El hardware s gestionat pels programes, que
constitueixen el software. El software sestructura en nivells (Figura 1.2):

Llenguatge mquina, o llenguatge de baix nivell: els programes daquest nivell


sn els que interactuen directament amb el hardware. Les instruccions sn ordres
senzilles que es dnen a la circuiteria, escrites en binari.
Sistema operatiu: conjunt de programes que possibiliten un s cmode del
computador per part dun o ms usuaris, permetent que aquests no hagin de
conixer en detall la circuiteria. Alguns sistemes operatius sn Windows95, Unix o
OSF.
Llenguatges dalt nivell: llenguatges ms propers al llenguatge natural que el
binari, que permeten per tant escriure programes de manera cmoda. Sn
lleguatges dalt nivell el C, el Fortran i el VisualBasic.
Els programes escrits en alt nivell shan de traduir a llenguatge mquina per ser
executats. A la traducci se li diu compilaci.
Aplicacions: programes escrits en algun llenguatge dalt nivell i posats a
disposici dels usuaris del computador. Aquests noms han de conixer
laparincia de les aplicacions per a utilitzar el computador, podent ignorar tots els
nivells inferiors.

Aplicacions

Llenguatges dalt nivell

Sistema operatiu

Llenguatge mquina

Nivell fsic

Figura 1.2. Jerarquia de nivells dun computador.

2
Funcionament dels computadors
El funcionament bsic dun computador s el segent. La Unitat dE/S permet carregar
programes a la memria, ja sigui des duna unitat de disc (disc dur, CD-Rom etc.) o a travs
del teclat. Per executar el programa, les instruccions es transmeten duna en una des de la
memria cap a la CPU; aquesta les examina i activa els circuits apropiats per dur a terme les
operacions indicades per cada instrucci. Per fer una operaci sobre unes dades
determinades, aquestes tamb shan dhaver transferit prviament des de la memria cap al
processador. Les dades que resulten de lexecuci dels programes es transfereixen de la
CPU cap a la memria.
Habitualment, els programes es guarden a la memria de manera que les instruccions
ocupen un bloc de paraules consecutives i les dades ocupen un altre bloc de paraules
consecutives. Les instruccions sexecuten segons el seqenciament implcit: es comena
per la instrucci que hi ha en una adrea inicial i a continuaci sexecuten en seqncia les
instruccions que hi ha en adreces successives. Aquest seqenciament es pot trencar
mitjanant un tipus dinstruccions que sanomenen instruccions de salt.

Arquitectura de la Mquina Rudimentria


La Mquina Rudimentaria s un computador senzill i pedaggic basat en larquitectura von
Neumann. No t Unitat dE/S, donat que el funcionament daquest mdul sestudiar en
cursos posteriors. Aix, assumirem que els programes sn a la memria sense preguntar-nos
com hi han arribat.
A la Figura 1.3 es pot veure larquitectura de lMR. Observem que disposa de dos busos de
dades per comunicar la CPU i la memria, un en cada sentit.

CPU Memria
Bus de dades
Min
UP 16
16 Mout

3
Bus dadreces
11 M@
8

UC
Bus de control
1 L/E

Figura 1.3. Arquitectura de la Mquina Rudimentria

3
La memria
Les instruccions i les dades de lMR es codifiquen en 16 bits; per tant, les paraules de
memria i els busos de dades sn de 16 bits damplada. La memria t 256 paraules, i per
tant el bus dadreces s de 8 bits. Pel bus de control hi viatja un sol senyal, L/E, que indica en
cada moment a la memria si es vol realitzar una operaci de lectura (0) o una escriptura (1).
Per referir-nos al contingut de la paraula que hi ha a ladrea a usarem la notaci M[a]. Per
exemple, a la Figura 1.4 es compleix que M[FDh] = D964h.

ADREA CONTINGUT

00h 6D62h
01h 2346h
02h 8675h
03h 0005h
04h
... 0087h

...
FDh D964h
FEh CA10h
FFh 0091h

Figura 1.4. Exemple de memria

Les dades amb qu treballa la Mquina Rudimentria sn nmeros enters codificats en 16


bits i en complement a 2. Pot representar per tant el rang [-32.768, 32.767].

La Unitat Central de Procs (CPU)


Com ja hem vist, la CPU es divideix en la Unitat de Procs (UP) i la Unitat de Control (UC). La
segona rep 3 bits dinformaci de la primera, i li envia ordres a travs d11 senyals. En les
seccions 3 i 4 veurem el significat daquests 14 senyals.
La UP ha de ser capa de realitzar totes les accions necessries per a lexecuci
dinstruccions. Disposa, entre daltres, dels dispositius segents:

Registre dInstruccions (Instruction Register, IR): s un registre de 16 bits que


guarda en cada moment la instrucci que sest executant.
Comptador de Programa (Program Counter, PC): s un registre de 8 bits
encarregat de guardar en tot moment ladrea segent a la de la instrucci que
sest executant.
Banc de Registres: conjunt de registres que permeten guardar les dades amb
qu treballen els programes quan es porten de la memria a la CPU per a operar
amb elles o consultar-les. Hi ha 8 registres de 16 bits, que sidentifiquen pels
noms R0, R1, ..., R7. El registre R0 t la particularitat que no shi pot escriure i
sempre cont un 0.

4
Unitat Aritmtica i Lgica (Arithmetic-Logic Unit, ALU): s el circuit capa de fer
les operacions aritmtiques i lgiques requerides pels programes.
Bits de Condici (flags): sn dos bits que indiquen en tot moment si el resultat
de lltima operaci realitzada per lALU ha estat negatiu (bit N) o zero (bit Z).

Unitat de Control Unitat de Procs

Banc PC
11 de
Registres
IR
3

Bits N Z ALU
de condici

Figura 1.5. Esquema de la CPU de lMR.

5
2. Llenguatge Mquina de la Mquina
Rudimentria

El Llenguatge Mquina (LM) dun computador s un conjunt dinstruccions senzilles


codificades en binari que actuen directament sobre la circuiteria de la CPU. Donat que una
tira de 0s i 1s s incmoda de manejar pels humans, tots els computadors disposen del que
sanomena Llenguatge Assemblador (LA), que t les mateixes instruccions que el
Llenguatge Mquina per escrites usant termes mnemotcnics. Els programes escrits en LA
sn traduts a LM pel programa assemblador. En aquest captol veurem quines sn les
instruccions de la Mquina Rudimentria, primer en LA i desprs en LM. Les instruccions LM
de la Mquina Rudimentria es codifiquen en 16 bits.

Tipus dinstruccions
El Llenguatge Mquina de lMR t tres tipus dinstruccions:

Instruccions dAccs a Memria: donen ordre de transferir una dada de la


memria cap a la CPU (concretament cap al Banc de Registres) o al revs.
Instruccions Aritmtiques i Lgiques (A-L): donen ordre de fer operacions
aritmtiques o lgiques sobre dades dels programes.
Instruccions de Salt: donen ordre de trencar el seqenciament implcit si es
compleix una condici determinada.

Cada instrucci t un cert nombre doperands. Els operands font indiquen on sn les dades
que ha de fer servir la instrucci, i loperand dest indica on sha de guardar el resultat de
lexecuci de la instrucci, en cas que nhi hagi. Les instruccions de salt no utilitzen cap dada
ni generen cap resultat, noms indiquen a quina adrea shaur de saltar en cas que es
compleixi la condici.
Lexecuci dalgunes instruccions (no totes) fa que els bits de condici sactualitzin dacord
amb el resultat:

1 si el resultat < 0 1 si el resultat = 0


N := Z :=
0 si no 0 si no

6
Instruccions daccs a memria
En aquestes instruccions lacci que es fa s un moviment duna dada entre el processador i
la memria. Nhi ha dues, una per cada sentit de la transferncia:

LOAD font, dest


Crrega, transferncia del contingut duna paraula de memria cap a un registre
del Banc de Registres. Loperand font indica per tant una adrea de memria i
loperand dest un registre del Banc. Els bits de condici sactualitzen dacord amb
el valor de la dada transferida.

STORE font, dest


Emmagatzematge, transferncia del contingut dun registre cap a una adrea de
memria. Els bits de condici no es modifiquen.

Per indicar un registre en Llenguatge Assemblador es fa servir el seu nom; per exemple, R3.
Per indicar una adrea de memria sescriu
adrea_base(Ri)

on adrea_base s un nmero natural en el rang [0, 255] i Ri s el nom dun registre del
Banc, que en aquest context es diu que fa el paper de registre ndex. Ladrea efectiva de
loperand, s a dir, la seva adrea a la memria, es calcula aix:
adrea_efectiva = adrea_base + desplaament

essent desplaament el nmero enter guardat en els 8 bits ms baixos del registre ndex.
Aquesta suma la fa el processador durant lexecuci de la instrucci.
Aquesta manera despecificar una adrea efectiva (mode base+desplaament) permet
accedir de manera cmoda tant a dades simples com a dades estructurades (vectors).
A continuaci es mostren alguns exemples dexecuci dinstruccions daccs a memria;
els valors modificats per la instrucci estan en negreta.

LOAD 0(R3), R1

ABANS DESPRS

Memria
0Ch 1101 0100 0101 0101 1101 0100 0101 0101
Registres
R1 xxxx xxxx xxxx xxxx 1101 0100 0101 0101
R3 xxxx xxxx 0000 1100 xxxx xxxx 0000 1100
Bit Z x 0
Bit N x 1

7
LOAD 12(R2), R2

ABANS DESPRS

Memria
0Bh 0110 1111 0101 1011 0110 1111 0101 1011
0Ch xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
Registres
R2 1111 1111 1111 1111 0110 1111 0101 1011
Bit Z x 0
Bit N x 0

STORE R5, 11(R0)

ABANS DESPRS

Memria
0Bh xxxx xxxx xxxx xxxx 0000 0000 0000 1011
Registres
R0 0000 0000 0000 0000 0000 0000 0000 0000
R5 0000 0000 0000 1011 0000 0000 0000 1011
Bit Z x x
Bit N x x

Codificaci en LM
Les instruccions daccs a memria es codifiquen en Llenguatge Mquina de la manera
segent:

2 3 3 8

CO Rd/Rf Ri adrea_base
15 13 10 7 0

LOAD 00 Rd Ri adrea_base

STORE 01 Rf Ri adrea_base

- el camp CO (Codi dOperaci, bits 15:14) indica de quin tipus dinstrucci es


tracta
- els camps que codifiquen registres (Rd, Rf i Ri) tenen 3 bits, donat que el Banc t
8 registres; per fer referncia al registre Rx es codifica el nmero x en binari
natural

8
- el camp adrea_base t 8 bits, donat que ha de poder guardar nmeros naturals
entre 0 i 255.

Vegem alguns exemples de codificaci dinstruccions daccs a memria en Llenguatge


Mquina:

Llenguatge
Llenguatge Mquina en hexadecimal:
Assemblador

LOAD 10(R3), R1 00 001 011 00001010 0B0Ah


LOAD 0(R0), R1 00 001 000 00000000 0800h
STORE R0, 100(R3) 01 000 011 01100100 4364h
STORE R7, 255(R7) 01 111 111 11111111 7FFFh

Instruccions aritmtiques i lgiques


Les instruccions aritmtiques i lgiques (A-L) de la Mquina Rudimentria sn les segents:

ADD font1, font2, dest


ADDI font1, font2, dest
Addition, suma de dos enters.

SUB font1, font2, dest


SUBI font1, font2, dest
Substraction, resta de dos enters.

ASR font, dest


Arithmetic shift right, desplaament aritmtic cap a la dreta dun bit; el bit de ms
pes es replica per tal de mantenir el signe. s equivalent a una divisi entera per
2.

AND font1, font2, dest


And lgica de dos operands.

Desprs dexecutar-se qualsevol instrucci A-L, els bits de condici sactualitzen segons el
valor del resultat.
Totes les instruccions aritmtiques i lgiques obtenen els operands font del Banc de
Registres i escriuen el resultat al Banc de Registres, excepte les instruccions ADDI i SUBI.
En aquestes dues instruccions, el segon operand font es diu operand immediat i s un
nmero enter entre -16 i 15. Per indicar un operand immediat sescriu
#nmero
on nmero [-16, 15].
A continuaci es mostren alguns exemples dexecuci dinstruccions A-L.

9
ADD R4, R3, R5

ABANS DESPRS

R3 1000 1110 1111 1011 1000 1110 1111 1011


R4 0011 1000 1010 1010 0011 1000 1010 1010
R5 xxxx xxxx xxxx xxxx 1100 0111 1010 0101
Bit Z x 0
Bit N x 1

SUBI R1, #13, R2

ABANS DESPRS

R1 0000 0000 0001 1000 0000 0000 0001 1000


R2 xxxx xxxx xxxx xxxx 0000 0000 0000 1011
Bit Z x 0
Bit N x 0

ASR R2, R5

ABANS DESPRS

R2 1101 0011 0010 0001 1101 0011 0010 0001


R5 xxxx xxxx xxxx xxxx 1110 1001 1001 0000
Bit Z x 0
Bit N x 1

AND R1, R0, R1

ABANS DESPRS

R0 0000 0000 0000 0000 0000 0000 0000 0000


R1 0110 1111 0101 1011 0000 0000 0000 0000
Bit Z x 1
Bit N x 0

10
Codificaci en LM
Les instruccions A-L es codifiquen en Llenguatge Mquina de la manera segent:

2 3 3 5 3
Instruccions A-L amb un CO Rd Rf1 immediat OP
operand immediat 15 13 10 7 2 0

ADDI 11 Rd Rf1 immediat 000

SUBI 11 Rd Rf1 immediat 001

2 3 3 3 2 3
Instruccions A-L amb
CO Rd Rf1 Rf2 00 OP
operands a registres 15 13 10 7 4 2 0

ADD 11 Rd Rf1 Rf2 00 100

SUB 11 Rd Rf1 Rf2 00 101

ASR 11 Rd Rf2 00 110

AND 11 Rd Rf1 Rf2 00 111

En totes elles el camp CO t el valor 11. Per distingir entre elles es fa servir el camp OP
(Operaci, bits 2:0); observem que hi ha dues combinacions daquests 3 bits que no es fan
servir, donat que noms hi ha 6 instruccions A-L.
Per codificar els operands immediats calen 5 bits (7:3), donat que el rang de valors
possibles s [-16, 15] i es codifiquen en complement a 2. En les instruccions amb tots els
operands en registres els bits 4:3 no es fan servir, i contenen el valor 00.
La instrucci ASR t un valor indefinit en els bits 10:8 (camp Rf1), donat que noms t un
operand font.
A continuaci es mostren alguns exemples de codificaci dinstruccions A-L en LM.

Llenguatge
Llenguatge Mquina en hexadecimal:
Assemblador

ADD R4, R0, R5 11 101 100 000 00 100 EC04h


SUBI R3, #1, R3 11 011 011 00001 001 DB09h
ASR R2, R2 11 010 000 010 00 110 D046h
AND R7, R7, R7 11 111 111 111 00 111 FFE7h

11
Instruccions de salt
Les instruccions de salt donen al processador la possibilitat de trencar el seqenciament
implcit. Per qu es produeixi aquest trencament sha de complir la condici de salt. Si no es
compleix, es segueixen executant les instruccions en seqncia; si es compleix, es diu que el
processador salta o pren el salt. Les instruccions de salt sn necessries per implementar
sentncies dalt nivell de tipus condicional i iteratiu.
Hi ha diverses instruccions de salt, que es distingeixen perqu la condici de salt que
savalua s diferent en cadascuna delles. La sintaxi s
codi_doperaci adrea_dest_del_salt

on codi_doperaci s el nom de la instrucci i adrea_dest_del_salt indica ladrea de la


instrucci que sexecutar a continuaci en cas que es prengui el salt; per tant, s un nmero
entre 0 i 255.
La condici de salt savalua en funci del resultat de lltima instrucci aritmtica o de
crrega que ha executat el processador; la utilitat dels bits de condici s justament facilitar
aquesta avaluaci. En concret, les instruccions de salt de la Mquina Rudimentria sn les
segents:

Condici de salt: si lltim


Instrucci: Branch if... Qu savalua
resultat ha estat...

BL ...lower ...menor que 0 N=1


BG ...greater ...ms gran que 0 N=0iZ=0
BEQ ...equal ...igual a 0 Z=1
BNE ...not equal ...diferent de 0 Z=0
BLE ...lower or equal ...menor o igual que 0 N=1oZ=1
BGE ...greater or equal ...ms gran o igual que 0 N=0
BR Branch Salt incondicional 1

En la instrucci de salt incondicional, BR, no savalua cap condici, sempre es pren el salt. En
executar les instruccions de salt no es modifiquen el bits de condici.
A continuaci es mostren alguns exemples dexecuci dinstruccions de salt.

BR 25

ABANS DESPRS

PC xxxx xxxx 0001 1010


Bit Z x x
Bit N x x

12
BGE 174

ABANS DESPRS

PC 0001 1000 0001 1001


Bit Z 0 0
Bit N 1 1

BGE 174

ABANS DESPRS

PC 0001 1000 1010 1111


Bit Z 1 1
Bit N 0 0

Codificaci en LM
Les instruccions de salt es codifiquen en LM aix:
2 3 3 8

CO COND 000 @_dest_del_salt


15 13 10 7 0

BR 10 000 000 @_dest_del_salt

BEQ 10 001 000 @_dest_del_salt

BL 10 010 000 @_dest_del_salt

BLE 10 011 000 @_dest_del_salt

BNE 10 101 000 @_dest_del_salt

BGE 10 110 000 @_dest_del_salt

BG 10 111 000 @_dest_del_salt

En totes elles el camp CO t el valor 10. Per distingir entre elles es fa servir el camp COND
(Condici, bits 13:11); observem que hi ha una combinaci daquests 3 bits que no es fa
servir, donat que noms hi ha 7 instruccions de salt.
El camp dels bits 10:8 no susa, i t el valor 000 per totes les instruccions de salt. Els bits
7:0 codifiquen ladrea dest del salt.

13
A continuaci es mostren alguns exemples de codificaci dinstruccions de salt.

Llenguatge
Llenguatge Mquina en hexadecimal:
Assemblador

BR 25 10 000 000 00011001 8019h


BL 0 10 010 000 00000000 9000h
BEQ 136 10 001 000 10001000 8888h

Exemple de programaci en Llenguatge Mquina de la Mquina


Rudimentria
A continuaci es presenta la traducci dun programa en alt nivell a Llenguatge Mquina de
lMR. El que fa el programa s la multiplicaci de dues variables a i b mitjanant una suma
acumulada da sobre la variable mul b vegades.

Programa en alt nivell:


var a,b,mul: enter;
a:= 10;
b:= 5;
mul:= 0;
mentre b>0 fer
mul:= mul+a;
b:= b-1;
fmentre

En la traducci a Llenguatge Assemblador sha suposat que:


- les variables a, b i mul es guarden a les adreces 00h, 01h i 02h respectivament
- les variables ja estan inicialitzades (s a dir, no cal traduir les 3 primeres
sentncies dalt nivell).

14
Programa en baix nivell:

Llenguatge Assemblador @ M[@]: Llenguatge Mquina en hexadecimal


00h 0000 0000 0000 1010 000Ah
01h 0000 0000 0000 0101 0005h
02h 0000 0000 0000 0000 0000h
carregar LOAD 0(R0), R1 03h 0000 1000 0000 0000 0800h
dades LOAD 1(R0), R2 04h 0001 0000 0000 0001 1001h
ADDI R0, #0, R3 05h 1101 1000 0000 0000 D800h
SUBI R2, #0, R0 06h 1100 0010 0000 0001 C201h
clculs BLE 0Bh 07h 1001 1000 0000 1011 980Bh
ADD R3, R1, R3 08h 1101 1011 0010 0100 DB24h
SUBI R2, #1, R2 09h 1101 0010 0000 1001 D209h
BR 06h 0Ah 1000 0000 0000 0110 8006h
guardar STORE R3, 2(R0) 0Bh 0101 1000 0000 0010 5802h
resultat

Durant lexecuci del programa les variables a, b i mul es guarden a R1, R2 i R3


respectivament. Les instruccions del programa comencen a ladrea 03h.
Es pot observar que, tal com s tpic, el programa en baix nivell consta de tres parts. En la
primera es porten les dades amb les que treballa el programa cap al processador, en la
segona es fan els clculs requerits pel programa, i en lltima els resultats es guarden a la
memria.

- La instrucci ADDI R0, #0, R3 inicialitza R3 a 0. Aix es pot fer de diverses


maneres:
AND R0, R1, R3
LOAD 2(R0), R3
etc.

- La instrucci SUBI R2, #0, R0 s la traducci de lavaluaci de la condici del


bucle (b > 0). Com que a R0 no shi pot escriure, lnic efecte de la instrucci s
que el bits de condici sactualitzen dacord amb el valor dR2 (que guarda la
variable b).

15
Resum del Llenguatge Mquina de lMR

2 3 3 8

LOAD 00 Rd Ri adrea_base
15 13 10 7 0
2 3 3 8

STORE 01 Rf Ri adrea_base
15 13 10 7 0

2 3 3 8
SALTS 10 COND 000 @_dest_del_salt
15 13 10 7 0

2 3 3 5 3
A-L AMB IMMEDIAT 11 Rd Rf1 immediat OP
15 13 10 7 2 0

2 3 3 3 2 3
A-L ENTRE 11 Rd Rf1 Rf2 00 OP
REGISTRES 15 13 10 7 4 2 0

Instrucci Instrucci
COND OP
de salt A-L

BR 000 ADDI 000


BEQ 001 SUBI 001
BL 010 ADD 100
BLE 011 SUB 101
BNE 101 ASR 110
BGE 110 AND 111
BG 111

Figura 2.1. Llenguatge Mquina de la Mquina Rudimentria.

16
3. Unitat de Procs de la Mquina
Rudimentria

Tal com ja havem vist, la Unitat de Procs s el conjunt de dispositius electrnics de la CPU
que permeten dur a terme totes les tasques necessries per a lexecuci dinstruccions.
Vegem quines sn aquestes funcions que la UP ha de ser capa de fer.
En totes les figures daquesta secci sescriuen en cursiva els noms dels senyals generats
per la Unitat de Control (que sestudiaran a la secci segent).

Guardar la instrucci que sest executant


Ja hem vist que les instruccions es porten duna en una de la memria al processador, on
sn executades. Lexecuci dura un cert nombre de cicles, durant els quals la instrucci es
guarda al Registre dInstruccions (IR). s un registre de 16 bits que t lentrada de dades
connectada amb la sortida de dades de la memria (Mout), tal com es mostra a la Figura 3.1.
El senyal de crrega Ld_IR el governa la Unitat de Control, que tamb dna ordre de llegir de
la memria posant a 0 el senyal L/E.

16
Mout

Memria
load IR

Ld_IR L/E L/E

Figura 3.1. Circuiteria per carregar el registre IR.

Seqenciament de les instruccions


El registre Comptador de Programa (PC) guarda en tot moment ladrea segent a la de la
instrucci que sest executant; es diu que apunta a la segent instrucci. El PC es fa servir
per adrear la memria desprs dexecutar cada instrucci per obtenir-ne la instrucci que
sexecutar a continuaci, excepte quan sha de prendre un salt. s doncs un registre de 8
bits, amb la sortida de dades connectada a lentrada dadreces de la memria (M@) a travs
del bus dadreces.
Donat que segons el seqenciament implcit sexecuten consecutivament les instruccions
dadreces successives, el contingut del PC sincrementa en 1 desprs de llegir de la memria
cada nova instrucci. El senyal de crrega Ld_PC est governat per la UC.
El seqenciament implcit pot trencar-se en executar instruccions de salt. En aquest cas,

17
ladrea de la instrucci a executar lespecifica la prpia instrucci de salt (que est guardada
a lIR), en els bits 7:0. Per tant, hi ha tamb una connexi entre els bits 7:0 de lIR i el bus
dadreces de la memria. El multiplexor SELADR (Figura 3.2), governat per la UC (senyal
PC/@), permet discriminar amb quin dels dos valors sha dadrear la memria en cada
moment.

PC/@

IR7-0
1
8
SELADR M@
0
Ld_PC

load
+1

PC
8 8

PC

Memria
8
8

IR

Figura 3.2. Circuiteria per al seqenciament dinstruccions.

Guardar les dades dels programes


Les dades dels programes es porten de la memria a la CPU per operar amb elles. Mentre
sn a la CPU es guarden al Banc de Registres, un conjunt de 8 registres de 16 bits amb els
noms R0, R1, ..., R7. El registre R0 sempre cont un 0. Els registres del Banc tamb es fan
servir per guardar resultats de clculs intermitjos que shagin de fer per executar els
programes.
Es pot llegir un registre i escriure un registre simultniament. Per aix el Banc de Registres
t un bus dentrada i un de sortida, ambds de 16 bits, i les entrades de control segents:

SL: selecci de lectura, senyal de 3 bits que permet seleccionar quin dels 8
registres es vol llegir.

SE: selecci descriptura, el mateix per per escriure.

E: perms descriptura (1 bit).

La Figura 3.3 mostra la implementaci interna del Banc de Registres.


A lentrada SL del Banc de Registres shi ha de poder arribar des de:
- els bits IR10:8 i IR7:5 quan sest executant una instrucci A-L. En aquest moment,
aquests camps corresponen a Rf1 i Rf2 respectivament, s a dir, indiquen quins
sn els operands font.
- tamb els bits IR10:8 quan sexecuten instruccions daccs a memria. En aquest
cas corresponen al camp Ri, s a dir, codifiquen el registre ndex.
- els bits IR13:11 en executar un STORE, per obtenir el registre font.

18
SL
3

c
R0 16

16
load R1
16
SL load R2
3
B.R. 16 16
load R3 Dout
SE Dout SE 16
3 16 3 load R4
16
load R5
E Din
1 16
load R6
16
16
val load R7

16
E
1
Din

Figura 3.3. Implementaci interna del Banc de Registres de lMR.

El multiplexor SELREG possibilita la connexi daquests tres camins amb lentrada SL del
Banc (Figura 3.4). SELREG est governat per la UC a travs del senyal CRf, de dos bits ja
que s un multiplexor 4-1.
Les escriptures al Banc de Registres es fan en acabar lexecuci duna instrucci A-L o un
LOAD. En tots dos casos el registre dest est codificat en els bits 13:11, i per aix hi ha una
connexi entre els bits IR13:11 i lentrada SE del Banc de Registres. La UC donar ordre
descriptura quan pertoqui mitjanant el senyal ERd.

0
3
1
3 SELREG SL
2 3
3
no usat 3
B.R.
3
2
CRf SE Dout
3 16
Rf/Rd Rf1/Ri Rf2 IR
13 11 10 87 5

ERd E Din
1

16

19
Figura 3.4. Entrades de control del Banc de Registres

Fer operacions amb les dades dels programes


Per a aix hi ha la Unitat Aritmtica i Lgica (ALU), que rep dos operands (entrades A i B, de
16 bits) i genera un resultat (sortida O, de 16 bits) i dos senyals dun bit (N i Z) que indiquen si
el resultat ha estat negatiu o zero. LALU est governada per tres senyals de control: C2, C1 i
C0.
A ms de fer les 4 operacions de qu disposa lMR (suma, resta, desplaament aritmtic a
la dreta i and), lALU tamb s capa de treure per la sortida el mateix valor que li arriba per
lentrada B (Figura 3.6.a). Aix s degut a qu la dada llegida de la memria per una
instrucci LOAD, abans de ser escrita al registre dest entra a lALU i en surt sense ser
modificada, per tal que els bits N i Z sactualitzin segons el seu valor.
La Figura 3.5 mostra la implementaci interna de lALU. Es pot observar que loperand que
arriba al desplaador s el que entra per lentrada B.

A B
16 16

Sumador Restador Desplaador AND

16 16 16 16 16

0 1 2 3
0 C0
mux1
1 C1

16

0 1
mux2 C2

O15 16
......

1 16

N O Z

Figura 3.5. Implementaci de lALU de la Mquina Rudimentria

Els senyals C1 i C0 permeten triar entre una de les 4 operacions A-L. Els 4 mduls operadors

20
estan connectats a les entrades del multiplexor mux1 en un ordre tal que els senyals C1 i C0
es poden connectar amb els bits 1 i 0 de lIR, que mentre sexecuten instruccions A-L
corresponen als 2 bits ms baixos del camp OP (vegeu la Figura 2.1).
El multiplexor mux2 permet triar entre el resultat duna operaci i el valor de lentrada B;
est governat pel senyal OPERAR, generat per la UC. La Figura 3.6 resumeix el paper dels
senyals que controlen lALU.

C2 C1 C0 Sortida
16 16
0 x x B
A B
1 0 0 A+B C2 OPERAR
1 0 1 A-B
N ALU C1 IR1
Z
O
C0 IR0
1 1 0 B >> 1
16
1 1 1 A and B

(a) (b)

Figura 3.6. (a) Funcions i (b) senyals de control de lALU.

Connexi de lALU amb la resta de blocs

Entrada A
Per aquesta entrada hi passen els primers operands de les instruccions
aritmtico-lgiques. El Banc de Registres no permet llegir dos registres alhora, i
per tant en les instruccions que requereixin dos operands del Banc aquests shan
de llegir en seqncia. Per aix cal tenir un registre, el registre RA, que guardi el
primer operand mentre es llegeix el segon i aix puguin ser presents tots dos
alhora a les entrades A i B de lALU (Figura 3.7). El senyal Ld_RA s generat per
la UC.

Entrada B
Per aquesta entrada hi passen:
- els segons operands quan sexecuten instruccions amb el segon operand en
registre (aix inclou lnic operand de la instrucci ASR)
- els operands immediats quan sexecuten instruccions amb el segon operand
immediat. En aquest cas, loperand s als bits IR7:3, i se li ha dextendre el
signe fins a 16 bits donat que est codificat en complement a 2; s el que fa el
mdul EXT (Figura 3.7).
- la dada provinent de la memria quan sexecuten instruccions LOAD.
El multiplexor SELDAT possibilita la connexi daquests tres camins amb
lentrada B de lALU. Lentrada de selecci 1, que discrimina entre instrucci A-L o

21
LOAD, es connecta amb el senyal OPERAR, governat per la UC. Lentrada de
selecci 0, que discrimina entre operand en registre o immediat, es connecta amb
el bit 2 de lIR (bit de ms pes del camp OP, vegeu la Figura 2.1).

Sortida O
El resultat que genera lALU sempre sha descriure al Banc de Registres, i per
aix la sortida O es connecta amb lentrada Din del Banc.

Sortides N i Z
Fan falta dos registres dun bit, RZ i RN, per guardar els bits de condici que
genera lALU a partir del resultat calculat. Les ordres de crrega Ld_RZ i Ld_RN
les dna la UC.

IR7-3

5
B.R.
Dout IR
EXT
16
16
ERd E
16
Mout
16
Din Ld_RA 16
3 2 1 0
1 OPERAR
SELDAT
load RA 0 IR2

Ld_RZ 16 16

16 A B
load

Memria
RZ
OPERAR
RN ALU
load IR1:0
2
O
Ld_RN
16

Figura 3.7. Connexi de lALU amb la resta de blocs

Avaluar la condici de salt


La decisi de si sha de saltar o no en executar una instrucci de salt sha de prendre en
funci de quina instrucci sigui (bits 13:11 de lIR, camp COND) i del valor guardat a RZ i RN,
tal com es mostra a la taula de la pgina 12. A la UP de la Mquina Rudimentria hi ha un
bloc combinacional que en funci daquestes informacions genera un senyal dun bit, Cond,
que val 1 si sha de saltar i 0 si no. La UC consulta el valor de Cond per decidir si dna a la
UP ordre de saltar o de seguir executant instruccions en seqncia.

22
Calcular ladrea efectiva en les instruccions daccs a memria
En executar instruccions daccs a memria, ladrea efectiva de loperand que s a memria
(font o dest) sobt sumant ladrea base, que s als bits IR7:0, ms el desplaament, que s
als bits 7:0 del registre ndex. Una vegada calculada, ladreca efectiva es guarda al registre
R@, que es connecta amb el bus dadreces a travs del multiplexor SELADR (Figura 3.8).
El registre R@ s necessari en lexecuci dun STORE, ja que ladrea efectiva sha de
mantenir present a lentrada dadreces de la memria mentre del Banc de Registres es llegeix
el registre font. Una connexi directa permet que aquest registre font arribi a lentrada de
dades de la memria, Min. Per executar un LOAD no s estrictament necessari el registre
R@, perqu en aquest cas noms sha de llegir un registre del Banc, el registre ndex.

Rx15-0
Dout Min
16 16

Rx7-0 Ld_R@

load
BANC PC/@
8
DE +
REGISTRES 8

R@
IR7-0 8
8
1
SELADR M@

PC
8
+1
8 load

Memria
Ld_PC

8
IR

Figura 3.8. Circuiteria per a ladreament de la memria.

Aquesta circuiteria modifica lleugerament lesquema que shavia proposat per executar
instruccions de salt a la Figura 3.2, ja que ara els bits 7:0 de lIR (adrea dest del salt) passen
pel sumador i pel registre R@ abans darribar a SELADR. Per tal que ladrea dest del salt
no es modifiqui, el valor que se li suma ha de ser 0; aix es pot aconseguir llegint el registre
R0 en aquest moment. s per aquesta ra que les instruccions de salt tenen el valor 000 en
els bits 10:8.

La figura segent mostra tota la circuiteria de la UP. Es pot veure que en total la Unitat de
Control envia 11 senyals per governar la UP. Les informacions que fa servir la UC per donar
valors a aquests 11 senyals sn el tipus dinstrucci que sest executant (bits IR15:14, camp
CO) i el senyal Cond (que indica si sha de prendre o no el salt en executar instruccions de
salt).

23
CLCUL DADRECES

GESTI DEL BANC DE REGISTRES Min


16
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8
PC/@
3
IR10-8 (Rf1/Ri) 1
+ 8
3
SL IR7-0

R@
SELREG 8
IR7-5 (Rf2) 2
3 8
3 16 1
no usat 3
3
SELADR M@
2 Rx15-0 0
BANC Dout 8
CRf 16
DE IR7-3 +1 8
IR13-11 (Rd) SE

PC
3 REGISTRES Ld_PC

MEMRIA
5
8
Ld_IR 16 Ld_IR
UNITAT DE CONTROL

Ld_PC ERd E
Din
Ld_R@ IR
24

EXT
Ld_RA
Ld_RZ
16
Mout
Ld_RN 16 16 16 16

ERd Ld_RA 16
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
AVALUACI DE LA
CRf RA 0 IR2 (OP2)
2 CONDICI DE SALT
OPERAR Ld_RZ 16 16

GESTI DE
Z A B
RZ LALU
IR15-14 (CO) OPERAR
2 Avaluaci N
de la condici RN ALU IR1-0 (OP1-0)
Cond 2
IR13-11(COND) O
3 Ld_RN
ALU15-0 16

L/E
L/E
25
4. Unitat de Control de la Mquina
Rudimentria

Fases en lexecuci duna instrucci


Per a executar una instrucci, el processador ha de realitzar seqencialment una srie
daccions; es diu que ha de passar per un cert nombre de fases, cadascuna de les quals pot
durar un o ms cicles de rellotge. Les fases dexecuci varien entre instruccions. En les
instruccions A-L sn aquestes:

Fase de fetch: es porta la instrucci que sha dexecutar des de la memria fins al
registre IR. La instrucci es llegeix de ladrea apuntada pel PC, que es carrega
amb el valor que tenia incrementat en 1.
Fase de decodificaci: la Unitat de Control analitza el codi doperaci de la nova
instrucci i decideix quines ordres haur de donar a la UP perqu lexecuti.
Fase de lectura doperands: els operands requerits per la instrucci es fan
arribar fins a lALU.
Fase dexecuci: lALU realitza loperaci indicada per la instrucci.
Fase descriptura de resultats: sescriu el resultat a la ubicaci de dest i
sactualitzen els bits de condici, si la instrucci ho requereix.

Les dues primeres fases sn comunes a totes les instruccions, i a partir daqu les accions
concretes varien. En les instruccions daccs a memria, abans de la lectura dels operands
cal calcular ladrea efectiva de loperand que sigui a memria; no hi ha fase dexecuci,
perqu loperand font sescriu sense modificar sobre loperand dest. En les instruccions de
salt, les tres ltimes fases es substitueixen per:
Fase davaluaci de la condici: es discerneix si sha de saltar o no en funci
del valor dels bits de condici i de la instrucci que sest executant.
Fase dexecuci: en cas que shagi de saltar es fa el fetch de la instrucci dest
del salt i sactualitza el PC convenientment.

La Unitat de Control s un sistema seqencial amb 3 entrades i 11 sortides, que canvia


destat a cada cicle de rellotge. Les ordres generades per la UC sn entrades de selecci de
multiplexors (PC/@, CRf i OPERAR) i permisos descriptura (senyals de crrega, senyal ERd
i senyal L/E). A cada cicle es fa servir un cert subconjunt de la circuiteria de la UP, i la part
que no interv est inactiva: els permisos descriptura es posen a 0 i les entrades de selecci
dels multiplexors tenen un valor indeterminat.
En la representaci grfica de lautmat de la UC no escriurem les 11 sortides dintre dels
estats, per raons de legibilitat. Dintre dels estats hi escriurem un mnemotcnic identificador
de les sortides, i els valors dels 11 senyals els posarem en una taula a part. En aquesta taula
escrivim en negreta els valors dels senyals que intervenen en les tasques de lestat
corresponent.

26
Fases comunes a totes les instruccions

FETCH

En aquesta fase shan de fer les accions segents, preservant lordre:


IR := M[PC]
PC := PC + 1
Per a aix cal fer arribar el contingut del PC fins al bus dadreces (PC/@ = 0), donar
ordre de llegir la memria (L/E = 0), i activar els senyals de crrega de lIR i el PC (el
que arriba a lentrada de dades del PC s en tot moment el que passa pel bus
dadreces ms 1). La Figura 4.1 mostra en tra gruixut i en negreta les parts de la UP
involucrades en la fase de fetch.

16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
3
IR7-5 (Rf2) 3
2 16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)

PC
SE

Memria
Ld_PC
3
REGISTRES IR7-3

8
16 5 Ld_IR
ERd E
Ld_IR Din
Unitat de Control

EXT IR
Ld_PC
Ld_R@
16

Ld_RA 16
Mout
16 16 16 16
Ld_RZ 16
Ld_RA
3 2 1 0
Ld_RN 16
SELDAT 1 OPERAR
ERd 0 IR2 (OP2)
RA
PC / @
Ld_RZ 16 16
2
CRf
OPERAR A B
Z
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

Figura 4.1. Activitat a la Unitat de Procs durant lestat FETCH.

Totes les accions que shan de dur a terme durant la fase de fetch es poden fer en un
cicle. Els registres PC i IR no es carregaran fins al final del cicle, coincidint amb el flanc
ascendent del rellotge, i per tant el valor del PC que arriba al bus dadreces es mant
constant al llarg de tot lestat de fetch (Figura 4.2).
Desprs de la fase de fetch es passar sempre a la fase de decodificaci,
independentment de quina instrucci sestigui executant (Figura 4.3).

27
Estat de FETCH Estat de DECODIFICACI

rellotge

temps

PC/@:= 0, L/E:= 0, IR:= M[PC]


Ld_PC:= 1, Ld_IR:= 1 PC:= PC+1

Figura 4.2. Temporitzaci dels events en lestat de fetch.

DECODIFICACI (estat DEC)

Durant aquesta fase, que dura un cicle, la UC avalua els senyals dentrada IR15:14, que
han pres el nou valor en linstant inicial del cicle, en carregar-se el registre IR. En
acabar la fase de decodificaci, la UC decideix quin ser lestat futur en funci dIR15:14
(Figura 4.3).
Durant aquesta fase la UP no fa res, i per tant totes les ordres de control estan
inactives.

Sortides F DE
IR15, IR14, Cond
Ld_IR 1 0

Ld_PC 1 0
ESTAT
Ld_R@ 0 0
SORT
Ld_RA 0 0

01x Ld_RZ 0 0
STORE
Ld_RN 0 0
00x
LOAD
ERd 0 0
FETCH xxx DEC
DE L/E 0 0
F 11x
A-L PC/@ 0 x
10x CRf xx xx
Salt
OPERAR x x

Figura 4.3. Fases comunes a totes les instruccions

28
Instruccions daccs a memria
Per completar lexecuci daquestes instruccions calen dos cicles, un per calcular ladrea
efectiva de loperand que s a memria, i laltre per fer la transferncia dinformaci, en un
sentit o en laltre segons si sexecuta un LOAD o un STORE.

CLCUL DE LADREA EFECTIVA (estat ADR1)

Es llegeix el registre ndex del Banc de Registres (CRf = 01), es calcula ladrea efectiva
(sortida del sumador que suma els 8 bits ms baixos del registre ndex ms els 8 bits
ms baixos de lIR) i sescriu al registre R@ al final del cicle (Ld_R@ = 1). Aquesta
adrea efectiva es podr fer servir per accedir a memria al cicle segent.

LOAD

En aquest estat es fan les accions corresponents a les fases de lectura doperands i
escriptura de resultats. Sadrea la memria amb el contingut dR@ (PC/R@ = 1), es
llegeix la memria (L/E = 0) i sescriu el que surt de lALU al registre dest (ERd = 1). El
que surt de lALU s el que ha arribat de la memria grcies a qu la UC posa
OPERAR a 0 (multiplexors SELDAT i mux2). Sactualitzen tamb els bits de condici
(Ld_RN = 1 i Ld_RZ = 1).

STORE

Es llegeix el registre font del Banc de Registres (CRf = 0) i el seu valor, que arriba fins a
lentrada de dades de la memria, sescriu (L/E = 1) a ladrea indicada pel registre R@
(PC/R@ = 1). Sn les accions corresponents a les fases de lectura doperands i
escriptura de resultats.

Sortides AD L S

Ld_IR 0 0 0

Ld_PC 0 0 0
xxx
Ld_R@ 1 0 0

Ld_RA 0 0 0
0xx
FETCH xxx DEC ADR1 x1x
STORE Ld_RZ 0 1 0
F DE AD S
Ld_RN 0 1 0
x0x
ERd 0 1 0
LOAD L/E 0 0 1
L
PC/@ x 1 1

CRf 01 xx 00

OPERAR x 0 x

Figura 4.4. Execuci de les instruccions daccs a memria

La Figura 4.5 mostra lactivitat a la UP durant els cicles ADR1 i LOAD.

29
16
Min
Rx7-0 Ld_R@
IR13-11 (Rf) 0 8
PC/@
3

IR10-8 (Rf1/Ri) 1 + 8

R@
3 SELREG SL 8
3
IR7-5 (Rf2) 3
2 16 8 1

no usado 3
3
IR7-0 SELADR M@
Rx15-0 0
2
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)

PC
SE
REGISTRES

Memria
3 Ld_PC
IR7-3
8
Ld_IR 5 Ld_IR
Unitat de Control

16

Ld_PC ERd E
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16
Mout
Ld_RN 16 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(a)

16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
3
IR7-5 (Rf2) 3
2 16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)
PC

SE

Memria
Ld_PC
3
REGISTRES IR7-3
8
Ld_IR 16 5 Ld_IR
Unitat de Control

ERd E
Ld_PC
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16 Mout
16
Ld_RN 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(b)

Figura 4.5. Activitat a la UP durant els estats ADR1 (a) i LOAD (b).

30
Instruccions aritmtiques i lgiques
Per a completar lexecuci daquestes instruccions calen 2 cicles desprs de la
decodificaci:

LECTURA DEL PRIMER OPERAND (estat LPO)

El primer operand es llegeix del Banc de Registres (CRf = 01, arriba el camp Rf1 de lIR
a lentrada SL del Banc) i sescriu al registre RA (Ld_RA = 1). Si la instrucci que
sexecuta s una ASR, el valor escrit al registre RA no es far servir per res.

LECTURA DEL SEGON OPERAND I EXECUCI (estat LSOE)

Es llegeix del Banc el registre indicat pel camp Rf2 de la instrucci (CRf = 10), que
arriba a lentrada 3 de SELDAT. El bit IR2 decideix si loperand que arriba fins a lALU s
el que ve del registre o limmediat guardat a lIR una vegada se li ha exts el signe (el
senyal OPERAR val 1 mentre sexecuten instruccions A-L).
Durant aquest cicle, els 4 mduls de clcul de lALU computen un resultat. Els bits IR1:0
determinen quin dels 4 valors ser el que surti de lALU, ja que el senyal OPERAR
estar a 1. LALU computa tamb els valors dels bits N i Z.
Tant el resultat de loperaci com els bits de condici tindran el valor correcte al final del
cicle, i per tant es poden escriure ja a la seva ubicaci de dest, ajuntant daquesta
manera en un mateix cicle les fases dexecuci i escriptura de resultats. Durant lestat
LSOE, doncs, la UC dna ordre descriure sobre el Banc de Registres (ERd = 1) i de
carregar els bits de condici als biestables (Ld_RZ = 1 i Ld_RN = 1).

Sortides PO SOE

Ld_IR 0 0

Ld_PC 0 0

Ld_R@ 0 0

Ld_RA 1 0
xxx 11x xxx
FETCH DEC LPO LSOE Ld_RZ 0 1
F DE PO SOE
Ld_RN 0 1

ERd 0 1

L/E 0 0

PC/@ x x

CRf 01 10

OPERAR x 1

Figura 4.6. Execuci de les instruccions aritmtiques i lgiques.

La Figura 4.7 mostra lactivitat a la UP durant els estats LPO i LSOE.

31
16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 3 1 + 8

R@
SELREG SL 8
3
IR7-5 (Rf2) 3
2 16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)

PC
SE

Memria
Ld_PC
3
REGISTRES IR7-3
8
Ld_IR 16 5 Ld_IR
Unitat de Control

ERd E
Ld_PC
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16
Mout
Ld_RN 16 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(a)

16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
3
IR7-5 (Rf2) 3 2 16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)
PC

SE

Memria
Ld_PC
3
REGISTRES IR7-3

8
Ld_IR 16 5 Ld_IR
Unitat de Control

Ld_PC ERd E
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16 16
Mout
Ld_RN 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2
16 16
OPERAR Ld_RZ

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(b)

Figura 4.7. Activitat a la UP durant els estats LPO (a) i LSOE (b).

32
Instruccions de salt
Calen tres cicles desprs de la decodificaci per completar lexecuci de les
instruccions de salt.

AVALUACI DE LA CONDICI DE SALT (estat ACS)

No es fa res, simplement la UC examina lentrada Cond per decidir si sha de saltar o


no. En cas que no shagi de saltar lestat futur s el de FETCH, per seguir lexecuci del
programa en seqncia (Figura 4.8).
Observem que les sortides en aquest estat tenen els mateixos valors que en lestat de
decodificaci (la UP est inactiva).

CLCUL DE LADREA DEST DEL SALT (estat ADR2)

En cas que shagi de saltar, sescriu al registre R@ (Ld_R@ = 1) ladrea dest del salt,
que s als bits 7:0 de lIR. Perqu aquesta adrea no es modifiqui en passar pel
sumador, es llegeix el registre R0 del Banc (CRf = 01, els bits IR10:8 tenen el valor 000
en les instruccions de salt).
Les sortides en aquest estat tenen els mateixos valors que en lestat ADR1.

SALT (estat BRANCH)

Es fa el fetch de la instrucci dest del salt: al bus dadreces hi arriba el contingut dR@
(PC/R@ = 1), es llegeix la memria (L/E = 0) i sescriu el que arriba per Mout al registre
IR (Ld_IR = 1). A ms, el PC es carrega (Ld_PC = 1) amb ladrea dest del salt ms 1.
Per tant, lestat futur daquest cicle s el de decodificaci, donat que el fetch de la
instrucci que sexecutar a continuaci ja est fet (Figura 4.8).

Sortides DE AD B

xx0 Ld_IR 0 0 1
10x Ld_PC 0 0 1
FETCH xxx DEC ACS
F DE DE Ld_R@ 0 1 0
xx1
Ld_RA 0 0 0

ADR2 Ld_RZ 0 0 0
AD Ld_RN 0 0 0
xxx ERd 0 0 0
xxx
L/E 0 0 0

BRANCH PC/@ x x 1
B
CRf xx 01 xx

OPERAR x x x

Figura 4.8. Execuci de les instruccions de salt.

33
16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
3
IR7-5 (Rf2) 3
2 16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)

PC
SE

Memria
Ld_PC
3
REGISTRES IR7-3

8
Ld_IR 16 5 Ld_IR
Unitat de Control

Ld_PC ERd E
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
Mout
16
Ld_RN 16 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

Figura 4.9. Activitat de la UP durant lestat BRANCH.

34
Graf destats complet de la Unitat de Control

xxx
xxx
xxx

LPO xxx LSOE


A-L
11x PO SOE

LOAD LOAD
00x
FETCH xxx DEC ADR1 L
0xx
F DE AD
01x STORE
STORE
S
10x

ACS xx1 ADR2 xxx BRANCH


xx0 SALT
DE AD B
xxx

Sortides F DE AD L S PO SOE B

Ld_IR 1 0 0 0 0 0 0 1

Ld_PC 1 0 0 0 0 0 0 1

Ld_R@ 0 0 1 0 0 0 0 0

Ld_RA 0 0 0 0 0 1 0 0

Ld_RZ 0 0 0 1 0 0 1 0

Ld_RN 0 0 0 1 0 0 1 0

ERd 0 0 0 1 0 0 1 0

L/E 0 0 0 0 1 0 0 0

PC/@ 0 x x 1 1 x x 1

CRf x x 01 xx 00 01 10 xx

OPERAR x x x 0 x x 1 x

Optimitzacions de la Unitat de Control


Les instruccions de la Mquina Rudimentria es poden executar en menys cicles que els que
es dibuixen en el graf anterior.
El cicle dedicat a avaluar la condici de salt (estat ACS) es pot estalviar, ja que el
valor del senyal Cond s conegut per la UC des del principi de lestat de
decodificaci, i per tant desprs daquest estat ja es pot triar entre diferents estats

35
futurs en funci de Cond. Es poden unificar doncs els estats DEC i ACS (que
tenen les mateixes sortides).
Durant els estats ADR1 i ADR2 es donen exactament les mateixes ordres a la UP.
Es poden unificar en un sol estat, ADR, i discriminar entre instruccions daccs a
memria i instruccions de salt posteriorment. El graf queda aix:

xxx
xxx
xxx
LPO xxx LSOE
A-L
11x PO SOE

LOAD LOAD
xxx
FETCH DEC 00x L

F 100 DE
0xx
101 ADR 01x STORE
STORE
AD S

10x
BRANCH SALT
xxx B

Les sortides dels estats LPO i ADR es diferencien noms en qu el primer dna
ordre de carregar el registre RA i el segon dna ordre de carregar el registre R@.
Es poden unificar els dos estats, i donar totes dues ordres de crrega. Si
finalment resulta que la instrucci en execuci s A-L, el valor carregat al registre
R@ no es far servir per res, per tampoc no afectar al correcte funcionament
del processador. Igualment, si la instrucci en execuci s daccs a memria o
de salt, el valor escrit al registre RA no tindr cap efecte sobre lexecuci.
A ms, aquestes tasques es poden fer durant lestat de decodificaci, encara que
no se spiga encara quina instrucci sest executant, ja que en aquest estat la
UP no estava fent cap feina.
A lestat de decodificaci modificat li diem DECO. La Figura 4.10.a mostra
lactivitat a la UP durant aquest estat.
Durant lestat LSOE no es fa servir la part de la UP dedicada al fetch de la
segent instrucci. Per tant, podem fer aquesta feina en el propi estat LSOE, de
manera que en acabar lexecuci duna instrucci A-L la instrucci segent
shaur carregat a lIR. Per tant, lestat futur de LSOE passa a ser lestat de
decodificaci.
Desprs daquesta modificaci, a lestat LSOE passem a dir-li ARIT. La Figura
4.10.b mostra lactivitat a la UP durant aquest estat.

A la Figura 4.11 es mostra com queda finalment el graf destats i la taula de sortides
corresponent.

36
16
Min
Rx7-0 Ld_R@
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
IR7-5 (Rf2) 3
2 3
16
8
1

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)

PC
SE

Memria
Ld_PC
3
REGISTRES IR7-3
8
Ld_IR 16 5 Ld_IR
Unitat de Control

Ld_PC ERd E
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16
Mout
Ld_RN 16 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(a)

16
Min
Ld_R@
Rx7-0
IR13-11 (Rf) 0 8 PC/@
3

IR10-8 (Rf1/Ri) 1 + 8
3

R@
SELREG SL 8
IR7-5 (Rf2) 2 3
16
8
1
3

no usado 3
3
IR7-0 SELADR M@
2 Rx15-0 0
BANC Dout
CRf 16 8

DE +1 8
IR13-11 (Rd)
PC

SE

Memria
Ld_PC
3
REGISTRES IR7-3

8
Ld_IR 16 5 Ld_IR
Unitat de Control

Ld_PC ERd E
Din
Ld_R@ IR
EXT
Ld_RA
16
Ld_RZ
16 Mout
Ld_RN 16 16 16 16

Ld_RA 16
ERd
16 3 2 1 0
PC / @ SELDAT 1 OPERAR
CRf RA 0 IR2 (OP2)
2

OPERAR Ld_RZ 16 16

Z A B
RZ
2 IR15-14 (CO) OPERAR
Avaluaci N
de la condici RN ALU 2
IR1-0 (OP1-0)
Cond
3
IR13-11(COND) O
Ld_RN
ALU15-0 16

L/E
L/E

(b)

Figura 4.10. Activitat a la UP durant els estats DECO (a) i ARIT (b).

37
xxx

xxx
LOAD
L
00x

xxx
FETCH DECO 01x STORE
F 100 D S

xxx
xxx 101
11x
ARIT
BRANCH A
B

Sortides F D A L S B

Ld_IR 1 0 1 0 0 1

Ld_PC 1 0 1 0 0 1

Ld_R@ 0 1 0 0 0 0

Ld_RA 0 1 0 0 0 0

Ld_RZ 0 0 1 1 0 0

Ld_RN 0 0 1 1 0 0

ERd 0 0 1 1 0 0

L/E 0 0 0 0 1 0

PC/@ 0 x 0 1 1 1

CRf xx 01 10 xx 00 xx

OPERAR x x 1 0 x x

Figura 4.11. Graf destats i taula de sortides de la Unitat de Control de la Mquina Rudimentria.

Dacord amb aquest disseny per a la Unitat de Control, les instruccions daccs a memria
triguen 3 cicles en executar-se. Les instruccions A-L es pot considerar que triguen 2 cicles, ja
que en lestat ARIT es fa el fetch de la instrucci segent. I les instruccions de salt triguen
tamb 2 cicles: FETCH i DECO, perqu lestat BRANCH pot considerar-se tamb part de la
instrucci segent.
La Unitat de Control de lMR, igual que qualsevol sistema seqencial, es pot implementar

38
de diverses maneres, per exemple amb una ROM i biestables.

Temps de cicle del computador


El temps de cicle dun computador s la durada del perode del senyal de rellotge. El temps
de cicle dun computador ha de ser prou gran com per qu en un cicle es puguin dur a terme
totes les tasques corresponents a qualsevol dels estats. Per exemple, les tasques que es fan
en lestat FETCH de la Mquina Rudimentria tenen la durada segent:

Tmux Tmem

Tinc

temps

on Tmux s el retard del multiplexor SELADR, Tmem s el retard de la memria i Tinc s el


retard de lincrementador. Per tant, el temps de cicle de lMR ha de ser com a mnim Tmux +
Tmem.
El temps de cicle dun computador est determinat pel retard de letapa que t el retard
ms gran.

Exemple dexecuci. Cronograma


A continuaci es presenta un exemple de programaci en Llenguatge Mquina i un
cronograma que mostra lestat de la UP i la UC durant uns quants cicles dexecuci. El
programa calcula la suma acumulada dels elements dun vector de 4 elements.

Programa en alt nivell:

var V: vector[0..3] de enter;


suma, i: enter ;
i:= 3; /* el vector es recorre del revs */
suma:= 0;
mentre (i 0) fer
suma:= suma+vector[i];
i:= i-1;
fmentre

En la traducci a baix nivell es fan les suposicions segents:

39
- les variables suma i i es guarden a les adreces 00h i 01h respectivament
- les variables suma i i ja estan inicialitzades, a 0 i 3 respectivament
- el vector V es guarda en les posicions 02h...05h; els valors dels seus elements
sn 2, 8, 5 i -3
- el programa comena a ladrea 06h

Programa en baix nivell:

Llenguatge Assemblador @ Llenguatge Mquina en hexadecimal

00h 0000 0000 0000 0000 0000h


01h 0000 0000 0000 0011 0003h
02h 0000 0000 0000 0010 0002h
03h 0000 0000 0000 1000 0008h
04h 0000 0000 0000 0101 0005h
05h 1111 1111 1111 1101 FFFDh
carregar LOAD 1(R0), R2 06h 0001 0000 0000 0001 1001h
dades LOAD 0(R0), R3 07h 0001 1000 0000 0000 1800h
LOAD 2(R2), R1 08h 0000 1010 0000 0010 0A02h
clculs
ADD R1, R3, R3 09h 1101 1001 0110 0100 D964h
SUBI R2, #1, R2 0Ah 1101 0010 0000 1001 D209h
BGE 08h 0Bh 1011 0000 0000 1000 B008h
guardar STORE R3, 0(R0) 0Ch 0101 1000 0000 0000 5800h
resultat

Es pot observar que lavaluaci de la condici del bucle es fa desprs del cos del bucle i no
abans. Aix es pot fer sempre que es tingui la certesa que sexecutar almenys una volta del
bucle (o en sentncies repeat).
Observem tamb que el valor dR2 s diferent a cada iteraci, i per tant la instrucci LOAD
02h(R2), R1 accedeix a cada volta a un element diferent del vector.

La Figura 4.12 mostra levoluci de la UP i la UC cicle a cicle durant lexecuci de les 6


primeres instruccions del programa. En el primer cicle de lexecuci el contingut de tots els
registres s desconegut llevat del PC i lR0, que sassumeix que valen 06h i 0 respectivament.
Tamb sassumeix que la UC est en lestat de FETCH.

40
LOAD 01h(R0), R2 LOAD 00h(R0), R3 LOAD 02h(R2), R1 ADD R1, R3, R3 SUBI R2, #1, R2 BGE 08h

ESTAT FETCH DECO LOAD FETCH DECO LOAD FETCH DECO LOAD FETCH DECO ARIT DECO ARIT DECO BRANCH DECO

Ld_IR 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0
Ld_PC 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0

Ld_R@ 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1

Ld_RA 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1

Ld_RZ 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0

Ld_RN 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0

ERd 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0

L/E 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PC/@ 0 x 1 0 x 1 0 x 1 0 x 0 x 0 x 1 x

CRf x 1 x x 1 x x 1 x x 1 2 1 2 1 x 1
OPERAR x x 0 x x 0 x x 0 x x 1 x 1 x x x

M@ 06h x 01h 07h x 00h 08h x 05h 09h x 0Ah x 0Bh x 08h x

Mout 1001h x 0003h 1800h x 0000h 0A02h x FFFDh D964h x D209h x B008h x 0A02h x
Min x 0000h x x 0000h x x 0003 x x FFFDh 0000h 0003h 0000h 0000h x 0002h

Din x x 0003h x x 0000h x x FFFDh x x FFFDh x 0002h x x x

PC 06h 07h 07h 07h 08h 08h 08h 09h 09h 09h 0Ah 0Ah 0Bh 0Bh 0Ch 0Ch 09h

IR x 1001h 1001h 1001h 1800h 1800h 1800h 0A02h 0A02h 0A02h D964h D964h D209h D209h B008h B008h 0A02h

R@ x x 01h 01h 01h 00h 00h 00h 05h 05h 05h 61h 61h 0Ch 0Ch 08h 08h

RA x x 0000h 0000h 0000h 0000h 0000h 0000h 0003h 0003h 0003h FFFDh FFFDh 0003h 0003h 0000h 0000h

RZ x x x 0 0 0 1 1 1 0 0 0 0 0 0 0 0

RN x x x 0 0 0 0 0 0 1 1 1 1 1 0 0 0

R0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

R1 x x x x x x x x x FFFDh FFFDh FFFDh FFFDh FFFDh FFFDh FFFDh FFFDh

R2 x x x 0003h 0003h 0003h 0003h 0003h 0003h 0003h 0003h 0003h 0003h 0003h 0002h 0002h 0002h

R3 x x x x x x 0000h 0000h 0000h 0000h 0000h 0000h FFFDh FFFDh FFFDh FFFDh FFFDh

Figura 4.12. Cronograma de les 6 primeres instruccions del programa exemple.

41
5. Llenguatge Assemblador de la Mquina
Rudimentria

Com ja hem vist, el Llenguatge Assemblador (LA) permet escriure programes en Llenguatge
Mquina de manera ms cmoda que les tires de 0s i 1s. Els programes escrits en LA sn
traduts a LM per lassemblador. Lassemblador rep com a entrada un fitxer contenint un
programa escrit en LA, i genera com a sortida un fitxer que cont el programa tradut a LM i
algunes informacions ms que lMR s capa dinterpretar i que sn necessries per qu
pugui executar correctament els programes.
En la Mquina Rudimentria, els programes en LM subiquen sempre a partir de ladrea
de memria 00h. Mentre tradueix, lassemblador mant el compte de quantes paraules de
memria shan ocupat fins al moment i per tant a quina adrea subicar el que tradueixi a
continuaci.
A ms del repertori dinstruccions, el Llenguatge Assemblador de lMR t aquests altres
elements: etiquetes, directives i comentaris.

Etiquetes
Sn cadenes alfanumriques seguides del carcter : que sescriuen al comenament duna
lnia dun programa en LA. Letiqueta permet identificar ladrea de memria on subicar el
que es tradueixi a continuaci.
Per exemple, suposem que el segent fragment de codi estar ubicat a partir de ladrea
0Ah de memria una vegada tradut a LM:

LOAD 0(R3), R1
BNE 13
ADD R2, R0, R1
etiq: ASR R1, R1

La segona instrucci es podria escriure

BNE etiq

Les etiquetes permeten que mentre sescriuen els programes en LA no shagi de conixer en
quines adreces de memria subicaran una vegada traduts a LM.

Directives
Sn sentncies del LA que no sexecutaran. Permeten definir la zona de dades de la memria
i indicar on comena i acaba la part executable del programa. En les lnies en LA que
continguin directives tamb shi poden definir etiquetes.
El LA de lMR t 5 directives:

42
=
Permet donar un nom a valors constants. Si escrivim per exemple

Num_elements = 100
lidentificador Num_elements es podr fer servir en tot el programa per referir-se
al valor 100. La definici de constants no implica ocupar cap espai de memria.

.dw (define word)


Assigna un cert valor inicial a una o ms adreces de memria, a partir de la
posici on apareix la directiva. Per exemple, si les primeres lnies dun programa
en LA sn

.dw 0
vector: .dw 10, 11, 12, -1
les adreces de memria 00h:04h contindran en comenar lexecuci del programa
els valors 0, 10, 11, 12 i -1, codificats en complement a 2. A ms, en el programa
ens podrem referir a ladrea 01h usant la paraula vector.

.rw (reserve word)


Reserva un cert nombre dadreces consecutives de memria sense donar-los cap
valor inicial; la utilitat s guardar espai per posar-hi els valors calculats durant
lexecuci del programa. Per exemple, si un programa comena amb les directives

.dw 10, -1
resultats: .rw 2
.dw 100 ADREA CONTINGUT

en comenar lexecuci a la memria hi haur el segent: 00h 000Ah


01h FFFFh
02h ?
03h ?
04h 0064h
...

...

.begin
Serveix per indicar a lMR quina instrucci haur dexecutar en primer lloc. En
concret, sescriu

.begin etiq_inici
on etiq_inici s una etiqueta definida just abans de la primera instrucci a
executar del programa. Hi ha dhaver una i noms una directiva .begin a tots els
programes en LA. Es pot escriure a qualsevol lloc del programa.
La directiva .begin no es tradueix a LM, sin que s una de les informacions
addicionals que hi ha al fitxer generat per lassemblador que permet a lMR
executar correctament els programes.

.end

43
Sha de posar immediatament desprs de lltima instrucci que sexecutar. Nhi
pot haver ms duna, si hi ha diferents punts dacabada del programa. Tampoc no
es tradueix a LM, sin que genera informaci de control per a lMR.

En general, els programes en LA comencen per un determinat nombre de directives de


definici de dades, i a continuaci sescriuen les instruccions.

Comentaris
Sn textos que sescriuen en els programes per tal de fer-los ms entenedors a possibles
lectors i al propi programador; es solen posar a la dreta de la instrucci o directiva a qu fan
referncia. En una lnia qualsevol dun programa en LA, sentn que s un comentari tot el
que apareix desprs del carcter ;. Si escrivim

resul: .rw 1 ; deixar espai per al resultat


ini: ADD R0, R0, R1 ; inicialitzar R1 a 0.
; SUB R1, R2, R3

la instrucci SUB no es traduir a LM, lassemblador assumir que forma part dun comentari.

El procs dassemblatge
Al programa assemblador se li dna com a entrada un fitxer contenint un programa en LA.
Lassemblador llegeix el programa dues vegades (es diu que els assembladors i compiladors
sn programes de dos passos).
La primera vegada, cada cop que troba una definici de constant o detiqueta apunta el
nom i el valor associat a la Taula de Smbols. En el cas de les constants el valor associat s
el que apareix a la dreta del =, en el cas detiquetes s ladrea on es defineix;
lassemblador de lMR sempre assumeix que el programa subicar a partir de ladrea de
memria 00h.
La segona vegada va tradunt cada lnia duna manera o altra segons la directiva o
instrucci que contingui. Quan troba una referncia a una etiqueta o constant, la tradueix pel
valor que ha apuntat anteriorment a la Taula de Smbols. Si a la Taula de Smbols no hi ha
letiqueta o la constant, dna un missatge al programador de qu ha coms lerror dusar un
identificador sense haver-lo definit.

44
El simulador de la Mquina Rudimentria
Per a usar el simulador de la Mquina Rudimentria shan de seguir els passos segents:

El codi font sha descriure en un fitxer amb extensi .mr.


Per a assemblar-lo, sha dinvocar la comanda enmr amb el nom de fitxer com a
argument. El programa enmr genera dos fitxers:
- un amb extensi .asm que cont el mateix codi que loriginal per sense
comentaris
- un amb extensi .cod que cont el codi mquina executable.
Per a simular lexecuci del programa sha dinvocar la comanda mr amb el nom
del programa com a argument.

> edit prog.mr > enmr prog prog.asm

prog.mr > mr prog


simulaci

prog.cod

45

You might also like