Вы находитесь на странице: 1из 17

El banco de registros del SPARCv8, en principio, puede tener ms de 100 registros pero slo deja ver una ventana

de 32 registros divididos en 4 grupos %g(general), %o(output), %l(local) y %i(input).

r[0] r[1] r[2] r[3] r[4] r[5] r[6] r[7]

%g0 %g1 %g2 %g3 %g4 %g5 %g6 %g7

r[8] r[9] r[10] r[11] r[12] r[13] r[14] r[15]

%o0 %o1 %o2 %o3 %o4 %o5 %o6 %o7

r[16] r[17] r[18] r[19] r[20] r[21] r[22] r[23]

%l0 %l1 %l2 %l3 %l4 %l5 %l6 %l7

r[24] r[25] r[26] r[27] r[28] r[29] r[30] r[31]

%i0 %i1 %i2 %i3 %i4 %i5 %i6 %i7

En el SPARCv8/4 se van a implementar los 32 registros mediante un banco de registros con tres puertos de lectura.

ALSU
fun 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 37 38 39 FUN ADD AND OR XOR SUB ANDN ORN XNOR ADDX Descripcin alu<=a+b alu<=a AND b alu<=a OR b alu<=a XOR b alu<=a - b alu<=a AND (NOT b) alu<=a OR (NOT b) alu<=a XNOR b alu<=a + b + c
ALSU32 4

1
a a a ALU32 alu 0 1 alsu

b b
4 fun(3..0) 1

UMUL alu<=a(15..0) * b(15..0) SMUL alu<=a(15..0) * b(15..0) SUBX alu<=a - b - c UDIV alu<=a / b(15..0) SDIV alu<=a / b(15..0) SLL SRL SRA alu<=a<<b alu<=a>>b alu<=a/(2^b)

ALSU32

alsu

desp32 a b(4..0) amt fun fun(1..0) 2 fun y

b fun(5) 6

fun

Funciones de la ALSU Diagrama de bloques de la ALSU indica que difiere en el nmero de bits del SPARC V8

Diagrama de puertos de la ALSU

calc_status a
32

Reg4

32

+,b

s
1 s(31)

32 1

icc_x(2)=z_x icc_x(3)= n_x n z v c icc_x(1)= v_x icc


4

sel

sel(+,-) vc sel sN v_x aN c_x bN


1

n z v c

1 a(31)

1 b(31)

v n c (cOz) (nXv) (zO(nXv)) z 1 v n icc c cOz nXv zO(nXv) z 0 O=OR X=XOR =NOT

15 14 13 12
10 9 8 7 6 5 4 3 2 1 0

16

status

Segundo bloque a construir Las lneas curvas indican que se toman algunos bits,las lneas rectas indican que se toman todos los bis.

Primer bloque a construir sel

icc_x(0)= c_x en rst c

condic

SPARCv8/4_risc1et
N

parte del circuito SPARCv8/4 y memoria


status Register file of 31 registers of 32 bits like listing 4.6 r_data1 w_data r_data2

Tringulo aumenta a N bits, repite el bit ms signif.

calc_status status D c we_icc

0 1

w-addr

r-addr3

5
32

IR(12..0) IR(13) IR(24..19) rs2cte13 i funci 32 IR

IR(30) ds

IR(29..25) IR(12..0) IR(18..14) rs1 rs2cte13 rd 32 nPC

r-addr2

r-addr1

Lnea Curva quita bits, por defecto los ms significativos

a ALSU32 alsu

fun(4)

reg_file3

r_data3 32

IR(31) DPe

PC
D

ROM 256 x 32 like listing 11.5

32

PC 8 Bus_PC 32 Bus_IR 32

ROM_Prog
addr8 dout

Bus_PC(9..2) 32

Operaciones en la ALSU del SPARCv8/4


10
fun 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 37 38 39

rd
FUN ADD AND OR XOR SUB ANDN ORN XNOR ADDX

f un

rs1

rs2cte13

Descripcin alsu<=a+b alsu<=a AND b alsu<=a OR b alsu<=a XOR b alsu<=a - b alsu<=a AND (NOT b) alsu<=a OR (NOT b) alsu<=a XNOR b alsu<=a + b + c

FUN rd,rs1,rs2cte13 (#En el SPARC rd va a la derecha) r[rd]<- FUN(r[rs1],r[rs2]cte13) PC<-PC+4, (Si es cc) icc<-icc_x

UMUL alsu<=a(15..0) * b(15..0) --(#En el SPARC UMUL es de 32x32 bits) SMUL alsu<=a(15..0) * b(15..0) --(#En el SPARC SMUL es de 32x32 bits) SUBX alsu<=a - b - c UDIV SDIV alsu<=a / b(15..0) --(#En el SPARC UDIV es de 64/32 bits) alsu<=a / b(15..0) --(#En el SPARC SDIV es de 64/32 bits)

SLL SRL SRA

alsu<=a<<b (rellena con ceros) alsu<=a>>b (rellena con ceros) alsu<=a/(2^b) (repite el bit mas significativo)

Primera instruccin ADD %g1,%g0,6


Cargar en %g1 el valor 6 (ADD %g1,%g0,6 ) Cargar la constante 6 en rs2cte13, Se suma con cero en la ALU. El resultado se almacena en el banco de registros, en el registro 1. Para ejecutarlo es necesario enviar un flaco positivo del reloj cuando las otras seales estn en:
DPe<=1 y ds<='0; para las instrucciones de la ALSU. rd<=00001; porque se va a almacenar en el registro 1. fun<=000000; para realizar la suma. rs1<=00000; para que sume 0 al 6 ya que %g0=0. i<='1'; para que cargue la constante 6. rs2cte13<=0000000000110; que es el valor de la constate 6.
ds 0 rd 00001 fun 000000 rs1 i rs2cte13 0000000000110

DPe 1

00000 1

Direccionamiento del SPARCv8/4


El SPARCv8/4 direcciona la memoria por bytes (conjunto de 8 bits). Sin embargo, las instrucciones son de 32 bits (es decir 4 bytes). Por lo tanto cada posicin de memoria de programa tiene 4 bytes. Por este motivo el contador de programa debe contar de 4 en 4. El contador de programa inicia en 0x4000 debido a que las primeras posiciones se dejan para perifricos.

Primer programa
Dir. Assembler Comentario 0x4000 MOV %g1,6 ! Carga 6 en %g1 0x4004 MOV %g2,9 ! Carga 9 en %g2 0x4008 ADD %g3, %g2, %g1 ! Suma en %g3 0x400C SRA %g4, %g3, 1 ! Desplaza en %g4 Qu operacin aritmtica hacen las dos ltimas instrucciones?

Comentario

SPARC V8

Assembler

R[rd]

mem

PC

icc

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

108 106 106 106 110 106 106 106 108 113 113 110 115 115 108 106 106 106 110 106 106 106 108 113 113 110 115 115 107 107 107

Suma Y O O excluyente Resta Y con rs2cte13 negada O con rs2cte13 negada O excluyente negada Suma con acarreo Mult. sin signo Mult. con signo Resta con acarreo Div. sin signo Div. con signo Suma Y O O excluyente Resta Y con rs2cte13 negada O con rs2cte13 negada O excluyente negada Suma con acarreo Mult. sin signo Mult. con signo Resta con acarreo Div. sin signo Div. con signo Desp. a la izq. (llena con ceros) Desp. a la der. (llena con ceros) Desp. a la der. (llena con signo)

ADD rd,rs1,rs2cte13 AND rd,rs1,rs2cte13 OR rd,rs1,rs2cte13 XOR rd,rs1,rs2cte13 SUB rd,rs1,rs2cte13 ANDN rd,rs1,rs2cte13 ORN rd,rs1,rs2cte13 XNOR rd,rs1,rs2cte13 ADDX rd,rs1,rs2cte13 UMUL rd,rs1,rs2cte13 SMUL rd,rs1,rs2cte13 SUBX rd,rs1,rs2cte13 UDIV rd,rs1,rs2cte13 SDIV rd,rs1,rs2cte13 ADDcc rd,rs1,rs2cte13 ANDcc rd,rs1,rs2cte13 ORcc rd,rs1,rs2cte13 XORcc rd,rs1,rs2cte13 SUBcc rd,rs1,rs2cte13 ANDNcc rd,rs1,rs2cte13 ORNcc rd,rs1,rs2cte13 XNORccrd, rs1,rs2cte13 ADDXcc rd,rs1,rs2cte13 UMULcc rd,rs1,rs2cte13 SMULcc rd,rs1,rs2cte13 SUBXcc rd,rs1,rs2cte13 UDIVcc rd,rs1,rs2cte13 SDIVcc rd,rs1,rs2cte13 SLL rd,rs1,rs2cte13 SRL rd,rs1,rs2cte13 SRA rd,rs1,rs2cte13

PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4

r[rd]<- r[rs1] + r[rs2]cte13 r[rd]<- r[rs1] AND r[rs2]cte13 r[rd]<- r[rs1] OR r[rs2]cte13 r[rd]<- r[rs1] XOR r[rs2]cte13 r[rd]<- r[rs1] - r[rs2]cte13 r[rd]<- r[rs1] AND NOT(r[rs2]cte13) r[rd]<- r[rs1] OR NOT(r[rs2])cte13 r[rd]<- r[rs1] XNOR r[rs2]cte13 r[rd]<- r[rs1] + r[rs2]cte13 + c r[rd]<- r[rs1] * r[rs2]cte13 r[rd]<- r[rs1] * r[rs2]cte13 r[rd]<- r[rs1] - r[rs2]cte13 - c r[rd]<- r[rs1] / r[rs2]cte13 r[rd]<- r[rs1] / r[rs2]cte13 r[rd]<- r[rs1] + r[rs2]cte13 r[rd]<- r[rs1] AND r[rs2]cte13 r[rd]<- r[rs1] OR r[rs2]cte13 r[rd]<- r[rs1] XOR r[rs2]cte13 r[rd]<- r[rs1] - r[rs2]cte13 r[rd]<- r[rs1] AND NOT(r[rs2]cte13) r[rd]<- r[rs1] OR NOT(r[rs2])cte13 r[rd]<- r[rs1] XNOR r[rs2]cte13 r[rd]<- r[rs1] + r[rs2]cte13 + c r[rd]<- r[rs1] * r[rs2]cte13 r[rd]<- r[rs1] * r[rs2]cte13 r[rd]<- r[rs1] - r[rs2]cte13 - c r[rd]<- r[rs1] / r[rs2]cte13 r[rd]<- r[rs1] / r[rs2]cte13 r[rd]<- r[rs1] << r[rs2]cte13 r[rd]<- r[rs1] >> r[rs2]cte13 r[rd]<- r[rs1] / (2**r[rs2]cte13) icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x icc<-icc_x

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd rd

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1

0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1

0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1

rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1 rs1

i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i

rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13 rs2cte13

10 10 10

100101 100110 100111

INSTRUCCIONES 1/2 SPARC v8/4

No hace operaciones Mueve Compara mayo o menor Compara con cero Invertir los bits Complemento a 2 Incrementa en uno Decrementa en 1 Borra un registro

NOP MOV rd,rs2cte13 CMP rs1,rs2cte13 TST rs2 NOT rd,rs1 NEG rd,rs2 INC rd,rs1 DEC rd,rs1 CLR rd

ADD R0,R0,R0 ADD rd,R0,rs2cte13 SUBcc R0,rs1,rs2cte13 ORcc R0,R0,rs2 XNOR rd,rs1,R0 SUBB rd,R0,rs2 ADD rd,rs1,1 SUBB rd,rs1,1 OR rd,R0,R0

Comentarios

SPARC V8

Assembler

R[rd]

mem

PC

icc

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

90 90 95 95 119 119 119 119 119 119 119 119 119 119 119 119 119 119 119 119 125 85 126 126

Carga en reg. dato de MEM Carga en reg. dato de MEM Almacena el reg. en la MEM Almacena el reg. en la MEM No brinca Brinca si son iguales Brinca si es menor o igual (S) Brinca si es menor (S) Brinca si es menor o igual (U) Brinca si c es uno (menor (U)) Brinca si es negativo Brinca si v es uno Brinca siempre Brinca si no son iguales Brinca si es mayor (S) Brinca si es mayor o igual (S) Brinca si es mayor (U) Brinca si c es cero (may,Igu (U)) Brinca si es positivo Brinca si v es cero Llamado a rutina Retorno de rutina Salto con reg. Salto con cte.

LD rd,[rs1+rs2] LD rd,[rs1+cte13] ST [rs1+rs2],rd ST [rs1+cte13],rd BN cte22 BE cte22 BLE cte22 BL cte22 BLEU cte22 BCS cte22 BNEG cte22 BVS cte22 BA cte22 BNE cte22 BG cte22 BGE cte22 BGU cte22 BCC cte22 BPOS cte22 BVC cte22 CALL cte30 RETL JMPL rd,rs1+rs2 JMPL rd,rs1+cte13

PC<-PC+4 PC<-PC+4 PC<-PC+4 PC<-PC+4

r[rd]<-m[r[rs1]+r[rs2]] r[rd]<-m[r[rs1]+cte13] m[r[rs1]+r[rs2]]<-r[rd] m[r[rs1]+cte13]<-r[rd]

1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

rd rd rd rd 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1

0 0 0 0

0 0 0 0

rs1 rs1 rs1 rs1

000 001010 cte13 1 000 001010 cte13 1 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22 cte22

rs2 rs2

PC<-4*cte22 + PC WHEN '0'='1' ELSE PC+4 PC<-4*cte22 + PC WHEN z='1' ELSE PC+4 PC<-4*cte22 + PC WHEN zOR(nXORv)='1' ELSE PC+4 PC<-4*cte22 + PC WHEN nXORv='1' ELSE PC+4 PC<-4*cte22 + PC WHEN cORz='1' ELSE PC+4 PC<-4*cte22 + PC WHEN c='1' ELSE PC+4 PC<-4*cte22 + PC WHEN n='1' ELSE PC+4 PC<-4*cte22 + PC WHEN v='1' ELSE PC+4 PC<-4*cte22 + PC WHEN '1'='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOTz='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOT(zOR(nXORv))='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOT(nXORv)='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOT(cORz)='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOTc='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOTn='1' ELSE PC+4 PC<-4*cte22 + PC WHEN NOTv='1' ELSE PC+4 PC<-PC+4*cte30 %o7<-PC PC<-%o7+8 PC<-r[rs1]+r[rs2] r[rd]<-PC PC<-r[rs1]+cte13 r[rd]<-PC

1 cte30 000 00 01110 0001111100 0000000100 0 0 rd 1110 00 rs1 0 0 0 0 0 0 0 0 0 rs2 0 rd 1110 00 rs1 1 cte13

INSTRUCCIONES 2/2 SPARC v8/4

Brinca si est n Brinca si no est n Brinca si est z Brinca si no est z Brinca si est c Brinca si no est c Brinca si est v Brinca si no est v

BnS cte22 BnC cte22 BzS cte22 BzC cte22 BcS cte22 BcC cte22 BvS cte22 BvC cte22

BNEG cte22 BPOS cte22 BE cte22 BNE cte22 BCS cte22 BCC cte22 BVS cte22 BVC cte22

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Ciclos PC n,z,v,c %l1 %l2 %l3 %l4

ir

DPe ds rs1,r-addr1 r-data1,a rs2cte13,r-addr2 r-data2 i b funci fun alsu, Bus_A Bus_Din rd,r-addr3 r-data3, Bus_Dout w-addr w-data we condi status cte22 nPC

SIMULACIN SPARC v8/4

SPARCv8/4_risc1et
N

circuito SPARCv8/4 y memorias


32 Register file of 31 registers of 32 bits like listing 4.6 r_data1 w_data r_data2 Bus_Din 32

Tringulo aumenta a N bits, repite el bit ms signif.

status status D c we_icc

r-addr3

r-addr2

r-addr1

0 1

w-addr

Lnea Curva quita bits, por defecto los ms significativos

a ALSU32 alsu

fun(4)

1 0 32

Bus_A 32

9 Bus_A(9..2) RAM 256x 32 like listing 11.1

reg_file3

r_data3 32 Bus_Dout 1 we if IR= ST then we<=1 else we<=0 32 Bus_we 1

RAM_Dat
addr8 din
we ce dout

b
6

5
5

32

IR(12..0) IR(13) IR(24..19) rs2cte13 i funci 32 IR

IR(30) ds

IR(29..25) IR(12..0) IR(18..14) rs1 rs2cte13 rd 32 nPC

IR(31) DPe IR(21..0) cte22

32

4 &00
4

24 0 1 24

PC
D

'1' Q PC 8 Bus_PC 32 Bus_IR 32

Arquitectura Harvard
ROM 256 x 32 like listing 11.5

32

ROM_Prog
addr8 dout

IR(28..25) condi status

Bus_PC(9..2) 32

SPARCv8/4_risc1et
N

circuito SPARCv8/4 y memoria


32 Register file of 31 registers of 32 bits like listing 4.6 r_data1 w_data r_data2 Bus_Din 32 Bus_A(9..2) 9

Tringulo aumenta a N bits, repite el bit ms signif.

status status D c we_icc

r-addr3

r-addr2

r-addr1

0 1

w-addr

Lnea Curva quita bits, por defecto los ms significativos

a ALSU32 alsu

fun(4)

1 0 32

Bus_A 32

reg_file3

Arquitectura Von Neumann

r_data3 32 Bus_Dout 32 1 we if IR= ST then we<=1 else we<=0 Bus_we 1 RAM 256x32 like listing 11.3

b
6

5
5

32

IR(12..0) IR(13) IR(24..19) rs2cte13 i funci 32 IR

IR(30) ds

IR(29..25) IR(12..0) IR(18..14) rs1 rs2cte13 rd 32 nPC

RAM

addr8_dat dout_dat

din_dat we_dat '1'

IR(31) DPe IR(21..0) cte22

32

4 &00
4

24 0 1 24

PC
D

32

PC 8 Bus_PC 32

ce_dat dout_prog addr8_prog R

IR(28..25) condi

Bus_PC(9..2) Bus_IR 32

status

32

1 1 1 1

rd rd

00 0 0 0 0 00 0 0 0 0

Lectura de memoria rs1 01010


rs1 0 0 0 0 1 cte13
LD rd,[rs1+rs2cte13] r[rd]<- m[r[rs1]+r[rs2cte13]] PC<-PC+4

rs2

1 1 1 1

rd rd

00 0 1 0 0 00 0 1 0 0

Escritura de memoria
rs1 rs1
ST [rs1+rs2cte13], rd m[r[rs1]+r[rs2cte13]]<- r[rd] PC<-PC+4

0 0 0 001010 cte13 1

rs2

Mximo
A-B
max:

%o0 : A %o1 : B %o3 : C

SUBcc %o0,%o1,%g0 BL Si_cumple NOP


MOV %o0,%o3 BA fin NOP MOV %o1,%o3 NOP

No

A<B

Si

No_cumple:

C=A

C=B

Si_cumple: fin:

fin

Brincos
0 0 0 condi
Cdigo de la condicin Ecuacin de la condicin Nombre lgico de la condicin {N,Z,V,C}x{Set, Clear}

Bcondi cte22

PC<-PC+4*cte22 WHEN condi ELSE PC+4

01 0
Interpretacin aritmtica con A-B

cte22
En el SPARC V8 antes de saltar se ejecuta la instruccin siguiente, por eso llevan NOP. En el SPARC V8/4 no.

Nombre aritmtico de la condicin

Nombre del SPARC de la condicin

condi 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

status(icc,condi) 0 Z Z or (N xor V) N xor V (CorZ) C N V 1 not Z not (Z or (N xor V)) not (N xor V) not (C or Z) not C not N not V

CONDI(L) BN BZS

BCS BNS BVS BA BZC

A-B 1=0 ! A=B AB (S) A<B (S) AB (U) A<B (U)

CONDI(A) BE BLE BL BLEU BLU BNEG

BCC BNC BVC

0=0 AB A>B (S) AB (S) A>B (U) AB (U)

BNE BG BGE BGU BGEU BPOS

CONDI BN BE BLE BL BLEU BCS BNEG BVS BA BNE BG BGE BGU BCC BPOS BVC

Descrip. (Ingls) Branch Never Branch on Equal Branch on Less or Equal Branch on Less Branch on Less or Equal Unsigned Branch on Carry Set (Less than, Unsigned) Branch on Negative Branch on Overow Set Branch Always Branch on Not Equal Branch on Greater Branch on Greater or Equal Branch on Greater Unsigned Branch on Carry Clear (Greater than or Equal, U.) Branch on Positive Branch on Overow Clear

Estructura IF
A-B
No_cumple: No

condicin

Si Si_cumple: Si_cumple fin:

No_cumple

SUBcc A,B,%g0 Bcondi Si_cumple ... ... BA fin ... ... ...

fin

Вам также может понравиться