processore deluxe

7
PROCESSORE DELUXE SET DI ISTRUZIONI

Upload: rinah-hicks

Post on 01-Jan-2016

52 views

Category:

Documents


2 download

DESCRIPTION

SET DI ISTRUZIONI. PROCESSORE DELUXE. Examples of Arithmetic / Logical instructions. Banco Registri. Banco Registri. ADD | SUB | MULT | DIV. C.S. < Regs dest >, < Reg sorg 1 >, < Reg sorg 2 >. LHI | LLI. 4. Examples of Load and Store instructions. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PROCESSORE DELUXE

PROCESSOREDELUXEPROCESSOREDELUXE

SET DI ISTRUZIONI

Page 2: PROCESSORE DELUXE

Examples of Arithmetic / Logical instructions

Example instruction

Instruction Name Meaning (RTL Language)

ADD R1, R2, R3 Add Regs[R1] <- Regs[R2]+Regs[R3]

ADDI R1, R2, #3 Add immediate Regs[R1] <- Regs[R2] + 3

LHI R1, #42 Load high immediate Regs[R1] <- 42##016

SLLI R1, R2, #5 Shift left logical immediate Regs[R1] <- Regs[R2] << 5

SLT R1, R2, R3 Set less than if (Regs[R2] < Regs[R3]) Regs[R1] <- 1 else Regs[R1] <- 0

4

Banco

Registri

Banco

Registri

C.S. <Regs dest>, <Reg sorg 1>, <Reg sorg 2>ADD | SUB | MULT | DIV

LHI | LLI

Page 3: PROCESSORE DELUXE

Example instruction

Instruction name Meaning(RTL Language)

LW R1,30(R2) Load word Regs[R1] <-32Mem[30+Regs[R2]]

LW R1,1000(R0) Load word Regs[R1] <-32Mem[1000+0] ; Register R0 always contains 0

LB R1,40(R3) Load byte Regs[R1] <-32 (Mem[40+Regs[R3]]0)24##Mem[40+Regs[R3]]

LBU R1,40(R3)Load byte unsigned

Regs[R1] <-32 024 ## Mem[40+Regs[R3]]

LH R1,40(R3) Load half wordRegs[R1] <-32 (Mem[40+Regs[R3]]0)

16 ## Mem[40+Regs[R3]] ## Mem[41+Regs[R3]]

LF F0,50(R3) Load float Regs[F0] <-32Mem[50+Regs[R3]]

LD FO,50(R2) Load double Regs[F0] ##Regs[F1] <-64Mem[50+Regs[R2]]

SW 500(R4),R3 Store word Mem[500+Regs[R4]] <-32Regs[R3]

SF 40(R3),F0 Store float Mem[40+Regs[R3]] <-32Regs[F0]

SD 40(R3),F0 Store doubleMem[40+Regs[R3]] <-32Regs[F0]; Mem[44+Regs[R3]] <-32Regs[F1]

SH 502(R2),R3 Store half Mem[502+Regs[R2]] <-16Regs[R3]16..31

SB 41(R3),R2 Store byte Mem[41+Regs[R3]] <-8Regs[R2]24..31

Examples of Load and Store instructions

5

Memoria

Esterna LOAD

BancoRegistri Store

BancoRegistri

Memoria

Esterna

C.S. <Regs dest>, immediato ( <Reg sorg> )

C.S. immediato ( <Reg dest> ), <Regs sorg>

Page 4: PROCESSORE DELUXE

ExampleInstruction

Instructionname Meaning (RTL Language)

J       name Jump PC <- name;((PC+4)-225) <= name< ((PC+4)+225)

JAL name Jump and link Regs[R31] <- PC+4;  PC <- name;((PC+4)-225)<= name <((PC+4)+225)

JALR R2 Jump and link register Regs[R31] <- PC+4;PC <- Regs[R2]

JR        R3 Jump register PC <- Regs[R3]

BEQZ R4, name Branch equal zero if (Regs[R4] == 0) PC <- name; ((PC+4)-215)<= name <((PC+4)+215)

BNEZ R4, name Branch not equal zero if (Regs[R4] != 0) PC <- name; ((PC+4)-215)<= name <((PC+4)+215)

Examples of Control-Flow instructions

6

Altero il contenuto del registro speciale PC che contiene l’indirizzo in memoria programmi dell’istruzione corrente

<Regs dest> = PC

Page 5: PROCESSORE DELUXE

PROCESSOREDELUXEPROCESSOREDELUXE

Simple Assembly Code

Page 6: PROCESSORE DELUXE

Example of Assembly Program

C[k] = A[k] + B[k];

LW R1, a(R4)LW R2, b(R4)ADD R3,R1,R2SW c(R4),R3

R1 <- Mem [R4+a]R2 <- Mem [R4+b]R3 <- R1 + R2Mem [c+R4] <- R3

dove R4 = 0, 4, 8, 12 …, (4xn)

7

Somma Vettoriale di due vettori A e B a n componenti int 32bits: C = A + B - a, b, c sono i rispettivi indirizzi in memoria delle prime componenti vettoriali (int 32bits)- tali vettori sono memorizzati in memoria con componenti sequenziali

Language C++

For (k=0; k<n; k++) C[k] = A[k] + B[k];

Page 7: PROCESSORE DELUXE

8

LW R1, a(R4)LW R2, b(R4)ADD R3,R1,R2SW c(R4),R3

LW R5, addr_n(R0)SUB R4,R4,R4SLT R12,R4,R5BEQZ R12,label1

carico il num “n x 4” in R5azzero R4if R4<R5 then R12=1 else R12=0salta a label1 (+6x4) se R12=0

ADDI R4,R4,#4J label2

Istruzione successivalabel1:

label2:

incremento R4 di 4 bytesalta a label2(-8x4)

Istruzione precedente

Branch

Branch

Example of Assembly Program

Somma Vettoriale di due vettori A e B a n componenti int 32bits: C = A + B - a, b, c sono i rispettivi indirizzi in memoria delle prime componenti vettoriali (int 32bits)- tali vettori sono memorizzati in memoria con componenti sequenziali

Language C++

For (k=0; k<n; k++) C[k] = A[k] + B[k];