background image

DLX

Wprowadzenie 

Wprowadzenie 

background image

Artur&Artek

Wprowadenie do WinDLX

2

Grupy rejestrów

rejestry ogólnego przeznaczenia 

rejestry ogólnego przeznaczenia 

(General-Purpose Registers);

(General-Purpose Registers);

rejestry dla liczb 

rejestry dla liczb 

zmiennoprzecinkowych (Floating-

zmiennoprzecinkowych (Floating-

Point Registers) pojedynczej i 

Point Registers) pojedynczej i 

podwójnej precyzji o formacie 

podwójnej precyzji o formacie 

zgodnym ze standardem IEEE 754;

zgodnym ze standardem IEEE 754;

rejestry pozostałe.  

rejestry pozostałe.  

background image

Artur&Artek

Wprowadenie do WinDLX

3

Rejestry ogólnego 

przeznaczenia

(GPR)

Trzydzieści dwa 32-bitowe rejestry: 

Trzydzieści dwa 32-bitowe rejestry: 

R0 – R31;

R0 – R31;

R0 zawsze zawiera wartość 0;

R0 zawsze zawiera wartość 0;

R31 zawiera adres powrotu  po 

R31 zawiera adres powrotu  po 

wykonaniu skoku ze śladem (JAL, 

wykonaniu skoku ze śladem (JAL, 

JALR);

JALR);

R1 – R30 – faktycznie pełnią rolę  

R1 – R30 – faktycznie pełnią rolę  

rejestrów ogólnego przeznaczenia;

rejestrów ogólnego przeznaczenia;

background image

Artur&Artek

Wprowadenie do WinDLX

4

Format GPR

Byte 0

Byte 0

Byte 1

Byte 1

Byte 2

Byte 2

Byte 3

Byte 3

0

7 8

15 16

23 24

31

MSb

LSb

MSB

LSB

BYTE REG.

FULLWORD REG.

HALFWORD REG.

background image

Artur&Artek

Wprowadenie do WinDLX

5

Rejestry 

zmiennoprzecinkowe

Trzydzieści dwa 32-bitowe rejestry (F0 

Trzydzieści dwa 32-bitowe rejestry (F0 

– F31) – liczby  o pojedynczej precyzji;

– F31) – liczby  o pojedynczej precyzji;

Te same rejestry mogą być 

Te same rejestry mogą być 

adresowane jako szesnaście  64-

adresowane jako szesnaście  64-

bitowych rejestrów 

bitowych rejestrów 

([F0,F1] – [F30,F31])

([F0,F1] – [F30,F31])

 

 

nazwanych odpowiednio (D0 – D30 ) – 

nazwanych odpowiednio (D0 – D30 ) – 

liczby o podwójnej precyzji;

liczby o podwójnej precyzji;

format liczb jest zgodny z IEEE 754.

format liczb jest zgodny z IEEE 754.

background image

Artur&Artek

Wprowadenie do WinDLX

6

Kolejność bajtów w liczbie 

pojedynczej precyzji

0                  7 8                15 16              23 24      

0                  7 8                15 16              23 24      

      31

      31

Byte 0

Byte 0

Byte 1

Byte 1

Byte 2

Byte 2

Byte 3

Byte 3

background image

Artur&Artek

Wprowadenie do WinDLX

7

Kolejność bajtów w liczbie 

podwójnej precyzji

0                  7 8               15 16               23 24      

0                  7 8               15 16               23 24      

      31

      31

Byte 0

Byte 0

Byte 1

Byte 1

Byte 2

Byte 2

Byte 3

Byte 3

32              39 40              47 48              55 56      

32              39 40              47 48              55 56      

      63

      63

Byte 4

Byte 4

Byte 5

Byte 5

Byte 6

Byte 6

Byte 7

Byte 7

background image

Artur&Artek

Wprowadenie do WinDLX

8

Rejestry różnego 

przeznaczenia

PC (Program Counter) , IR (, IAR

PC (Program Counter) , IR (, IAR

IMAR, DMAR, SDR, SDRHI, LDR, 

IMAR, DMAR, SDR, SDRHI, LDR, 

LDRHI

LDRHI

A, AHI, B, BHI, ALU, ALUHI

A, AHI, B, BHI, ALU, ALUHI

BTA

BTA

FPSR

FPSR

background image

Artur&Artek

Wprowadenie do WinDLX

9

Format danych

FULLWORD – 32 bity

FULLWORD – 32 bity

HALF WORD – 16 bitów

HALF WORD – 16 bitów

BYTE – 8 bitów 

BYTE – 8 bitów 

 

 

background image

Artur&Artek

Wprowadenie do WinDLX

10

Układ bajtów w pamięci

0             7 8            15 16       23 24      

0             7 8            15 16       23 24      

   31

   31

Adres 

Adres 

słowa

słowa

12

12

13

13

14

14

15

15

N+3

N+3

8

8

9

9

10

10

11

11

N+2

N+2

4

4

5

5

6

6

7

7

N+1

N+1

0

0

1

1

2

2

3

3

N

N

 układ bajtów BIG ENDIAN  

background image

Artur&Artek

Wprowadenie do WinDLX

11

Adresowanie

pamięć adresowana bajtowo

pamięć adresowana bajtowo

HALFWORD musi posiadać adres 

HALFWORD musi posiadać adres 

parzysty

parzysty

FULWORD musi posiadać adres 

FULWORD musi posiadać adres 

podzielny przez 4

podzielny przez 4

U_Adres_efektywny

U_Adres_efektywny

32

32

=Rejestr

=Rejestr

32

32

+S_OFFSET

+S_OFFSET

16 

16 

background image

Artur&Artek

Wprowadenie do WinDLX

12

Sytuacje wyjątkowe

nadmiar w wyniku wykonania 

nadmiar w wyniku wykonania 

rozkazów arytmetycznych: 

rozkazów arytmetycznych: 

ADD, 

ADD, 

ADDI, SUB, SUBI

ADDI, SUB, SUBI

rozkaz TRAP

rozkaz TRAP

rozkaz RFE – przywrócenie stanu 

rozkaz RFE – przywrócenie stanu 

sterowania

sterowania

 poprzedzającego sytuację 

 poprzedzającego sytuację 

wyjątkową

wyjątkową

background image

Artur&Artek

Wprowadenie do WinDLX

13

Grupy rozkazów

rozkazy typu load/store 

rozkazy typu load/store 

rozkazy przesłań

rozkazy przesłań

rozkazy arytmetyczne i logiczne

rozkazy arytmetyczne i logiczne

rozkazy operujące na danych 

rozkazy operujące na danych 

zmiennoprzecinkowych

zmiennoprzecinkowych

rozkazy skoków i rozgałęzień

rozkazy skoków i rozgałęzień

rozkazy specjalne

rozkazy specjalne

background image

Artur&Artek

Wprowadenie do WinDLX

14

Formaty rozkazów

I – type (immediate)

I – type (immediate)

R – type (register)

R – type (register)

J – type (jump) 

J – type (jump) 

background image

Artur&Artek

Wprowadenie do WinDLX

15

Format I – type 

0             5 6             10 11            15 16                

0             5 6             10 11            15 16                

      31

      31

Opcode

Opcode

rs

rs

1

1

rs

rs

2

2

immediate

immediate

        

        

6                5                   5                        16

6                5                   5                        16

W tym formacie są przedstawiane  rozkazy  
grupy load/store operujące na:  bajtach, 
słowach 16b, słowach 32b, danych 
natychmiastowych, jak też rozkazy soków 
bezwarunkowych (JR) i skoków ze śladem (JAR)

background image

Artur&Artek

Wprowadenie do WinDLX

16

Format R – type  

0             5 6           10 11          15 16         20 21         25 

0             5 6           10 11          15 16         20 21         25 

26       31

26       31

R-R ALU

R-R ALU

rs

rs

1

1

rs

rs

2

2

rd

rd

func

func

6

6

5

5

5

5

5

5

5

5

6

6

0             5 6           10 11          15 16         20 21         26 

0             5 6           10 11          15 16         20 21         26 

27         31

27         31

R-R FPU

R-R FPU

 

 

rs

rs

1

1

rs

rs

2

2

rd

rd

func

func

6

6

5

5

5

5

5

5

6

6

5

5

W tym formacie są przedstawiane rozkazy: 

 rejestr – rejestr realizowane przez ALU 

 rozkazy zapisu, odczytu do IAR lub FPRS

 przesłań pomiędzy GPR i/lub rejestrami FP

 pole opcode i func określają rozkaz do 

wykonania

background image

Artur&Artek

Wprowadenie do WinDLX

17

Format J – type 

0                 5 6                                                                       

0                 5 6                                                                       

         31

         31

opcode 

opcode 

name

name

6

6

26

26

Format zawiera rozkazy:

 skoków J (jump), JAL (jump and link)

 TRAP

 RFE

background image

Artur&Artek

Wprowadenie do WinDLX

18

Rozkazy typu load / store

LB Rd,Adr ; LBU Rd,Adr; LH Rd,Adr; LHU 
Rd,Adr; 

LW Rd,Adr; LF Fd,Adr; LD Dd,Adr; SB Adr,Rs;

SH Adr,Rs; SW Adr,Rs; SF Adr,Fs; SD Adr,Fs;

MOVI2FP Fd,Rs; MOVI2FP Rd,Fs; MOVF 
Fd,Fs; 

MOVD Dd,Ds.; MOVI2S SR,Rs; MOVS2I 
Rs,SR;

background image

Artur&Artek

Wprowadenie do WinDLX

19

Rozkazy arytmetyczne i 

logiczne

ADD Rd,Ra,Rb; ADDI Rd,Ra,Imm; ADDU Rd,Ra,Rb; 
ADDUI Rd,Ra,Imm; SUB Rd,Ra,Rb; SUBI Rd,Ra,Imm; 
SUBU Rd,Ra,Rb; SUBUI Rd,Ra,Imm; MULT Rd,Ra,Rb; 
MULTU Rd,Ra,Rb; DIV Rd,Ra,Rb; DIVU Rd,Ra,Rb; 
AND Rd,Ra,Rb; ANDI Rd,Ra,Imm; OR Rd,Ra,Rb;
ORI Rd,Ra,Imm; XOR Rd,Ra,Rb; XORI Rd,Ra,Imm; 
LHI Rd,Imm; SLL Rd,Rs,Rc; SRL Rd,Rs,Rc; SRA Rd,Rs,Rc; 
SLLI Rd,Rs,Imm; SRLI Rd,Rs,Imm; SRAI Rd,Rs,Imm; 
S__ Rd,Ra,Rb : "__" may be EQNELTGTLE or GE;
S__I Rd,Ra,Imm: "__" may be EQNELTGTLE or GE;
S__U Rd,Ra,Rb: "__ "may be EQNELTGTLE or GE
S__UI
 Rd,Ra,Imm; "_  " may be EQNELTGTLE or GE
NOP;

background image

Artur&Artek

Wprowadenie do WinDLX

20

Rozkazy sterujące

 BEQZ Rt,Dest; BNEZ Rt,Dest; BFPT 

Dest; 

    BFPF Dest; 

 J Dest; JR Rx; JAL Dest; JALR Rx; 

 TRAP Imm; 

 RFE Dest;

background image

Artur&Artek

Wprowadenie do WinDLX

21

Rozkazy na danych w 

formacie 

zmiennoprzecinkowym

ADDD Dd,Da,Db; ADDF Fd,Fa,Fb; SUBD 
Dd,Da,Db; SUBF Fd,Fa,Fb; MULTD Dd,Da,Db; 
MULTF Fd,Fa,Fb; 
DIVD Dd,Da,Db; DIVF Fd,Fa,Fb; CVTF2D Dd,Fs; 
CVTD2F Fd,Ds;
CVTF2I Fd,Fs; CVTD2I Fd,Ds; CVTI2D Dd,Fs; 
__D Da,Db: "__" may be EQ, NE, LT, GT, LE or 

GE;
 __F
 Fa,Fb: "__„ may be EQ, NE, LT, GT, LE or 

GE;

background image

Artur&Artek

Wprowadenie do WinDLX

22

Rozkaz Trap

Trap 0 – używany do kończenia 

Trap 0 – używany do kończenia 

programu

programu

Trap 1 – otwarcie pliku 

Trap 1 – otwarcie pliku 

Trap 2 – zamknięcie pliku

Trap 2 – zamknięcie pliku

Trap 3 – odczyt bloku z pliku

Trap 3 – odczyt bloku z pliku

Trap 4 – zapis bloku do pliku

Trap 4 – zapis bloku do pliku

Trap 5 – działanie jak printf w C

Trap 5 – działanie jak printf w C

background image

Artur&Artek

Wprowadenie do WinDLX

23

Program w asemblerze 
DLX:

.data
.align 

2

n:

.word

6

result:

.word

0

.text
.global

main

main:

;inicjacja danych
addi

r1, r0, 0

addi

r2, r0, 1

lw

r3,  n(r0)

lw

r10, n(r0)

Tu:

slei

r11, r10, #1

bnez r11, Exit
add r3, r1, r2
addi r1, r2, #0
addi r2, r3, #0
subi r10, r10, #1

Tu

Exit: sw

result(r0), r3

trap  0

Jaki jest efekt wykonania 
programu?

background image

Artur&Artek

Wprowadenie do WinDLX

24


Document Outline