DLX

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 EQ, NE, LT, GT, LE or GE;
S__I Rd,Ra,Imm: "__" may be EQ, NE, LT, GT, LE or GE;
S__U Rd,Ra,Rb: "__ "may be EQ, NE, LT, GT, LE or GE
S__UI
Rd,Ra,Imm; "_ " may be EQ, NE, LT, GT, LE 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
j

Tu

Exit: sw

result(r0), r3

trap 0

Jaki jest efekt wykonania
programu?

background image

Artur&Artek

Wprowadenie do WinDLX

24


Document Outline


Wyszukiwarka

Podobne podstrony:
labor dlx pol
arch DLX seminarium

więcej podobnych podstron