21
1 Programmer’s View of the EAGLE 2 16 -1 7 0 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 : : : Main memory :

1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

Embed Size (px)

Citation preview

Page 1: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

1

Programmer’s View of the EAGLE

216-1

7 015 0

R0R1

R7

Register file

IR

PC

CPU

012

:::

Main memory

:

Page 2: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

2

EAGLE : Notation

• [R3] means contents of register R3

• M[8] means contents of memory location 8

• A memory word at address 8 is defined as the 16 bits at address

9 and 8

Page 3: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

3

EAGLE : Notation

• Special notation for 16-bit memory wordsM[8]<15…0> := M[9] © M[8]© is used to represent concatenation

M[8]M[9]

07

0

MS Byte

7815M[9] M[8]

LS Byte

One instruction0

1

Mem

ory

addr

esse

s

Page 4: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

4

EAGLE: instruction formats

opcode

7 3

ra

0

Type Y

Type W opcode815

constant

0

15 11 10 8

constant

7 0

Type V opcode ra

7 6

ra

5 3

rb

2 0

Type X opcode ra rb

opcodeType Z07

2

Page 5: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

5

Encoding for the GPRsto be used in place of ra or rb.

RegisterRegister CodeCode RegisterRegister CodeCode

R0 000 R4 100

R1 001 R5 101

R2 010 R6 110

R3 011 R7 111

Page 6: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

6

Type Z

four instructions

halt (op-code=250)

nop (op-code = 249)

init (op-code = 251)

reset (op-code = 248)

opcode07

Page 7: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

7

add (op-code = 11)

add r1 R[0] R[1] + R[0]

and (op-code = 19)

and r5 R[0] R[1] & R[0]

div (op-code = 16)

div r6 R[0] R[0] / R[6]

R[6] R[0] % R[6]

mul (op-code = 15)

mul r4 R[0] R[0] * R[4]

Type Y opcode

7 3

ra

0

Page 8: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

8

not (op-code = 23)

not r6 R[6] !R[6]

or (op-code=21)

or r5 R[0] R[0] ~ R[5]

sub (op-code=12)

sub r7 R[0] R[0] – R[7]

opcode

7 3

ra

0

Type Y

Page 9: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

9

Type X

mov (op-code = 0)

mov r5, r1 R[5] R[1]

useful for register transfers

7 6

ra

5 3

rb

2 0

Type x opcode ra rb

Page 10: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

10

Type W

br (op-code = 252)

br 14 PC PC+14

Unconditional jump

opcode815

constant

0

Page 11: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

11

Type V

addi (op-code = 13)

addi r4, 31 R[4] R[4] +31

andi (op-code = 20 )

andi r6, 1 R[6] R[6] &1

in (op-code=29)

in r1, 45 R[1] IO[45]

load (op-code=8)

load r3, 6 R[3] M[6]

15 11 10 8

constant

7 0

opcode ra

Page 12: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

12

Type V

brn (op-code = 28)

brn r4, 3 if R[4] < 0, PC PC + 3

brnz (op-code = 25 )

brnz r6, 12 if R[6] != 0, PC PC + 12

brp (op-code=27)

brp r1, 45 if R[1] > 0, PC PC + 45

brz (op-code=8)

brz r5, 8 if R[5] = 0, PC PC + 8

15 11 10 8

constant

7 0

opcode ra

Page 13: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

13

Type V

loadi (op-code=9)

loadi r5, 54 R[5] 54

ori (op-code=22)

ori r7, 11 R[7] 11 ~ R[7]

out (op-code=30)

out 32, r5 IO[32] R[5]

15 11 10 8

constant

7 0

opcode ra

Page 14: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

14

Type V

shiftl (op-code=17)

shiftr( op-code=18)

store (op-code=10)

subi (op-code=14)

15 11 10 8

constant

7 0

opcode ra

Page 15: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

15

Functional Groups of Instructions

Control Instruction Mnemonic opcode

Reset reset 11111000

No operation nop 11111001

Halt halt 11111010

Init init 11111011

Page 16: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

16

Functional Groups of Instructions

Data Transfer Instruction

mnemonic opcode

Input in 11101

Output out 11110

Move mov 00

Load from memory load 01000

Load constant loadi 01001

Store into memory store 01010

Page 17: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

17

Functional Groups of Instructions

Branch instruction

mnemonic opcode

Branch if negative brn 11100

Branch if not zero brnz 11001

Branch if zero brz 11010

Branch if positive brp 11011

Branch br 11111100

Page 18: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

18

Functional Groups of Instructions

Arithmetic instruction

mnemonic opcode

Add add 01011

Add immediate addi 01101

Subtract sub 01100

Subtract immediate subi 01110

Divide div 10000

Multiply mul 01111

Page 19: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

19

Functional Groups of Instructions

Logic Instruction mnemonic opcode

And and 10011

And immediate andi 10100

Or or 10101

Or immediate ori 10110

Not not 10111

Shift left shiftl 10001

Shift right shiftr 10010

Page 20: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

20

Modified EAGLE

• One 16-bit accumulator: ACC• 8 GPRs: R0, R1, …, R7; 16-bits each• Two 16-bit system registers transparent to

the programmer: PC, IR• Memory word size: 16 bits• Memory space size: 216 bytes• Memory organization: 216 x 8 bits• Memory accessed in 16 bit words

( i.e., 2 byte chunks)• Little-endian byte storage

Page 21: 1 Programmer’s View of the EAGLE 2 16 -1 70 15 0 R0 R1 R7 Register file IR PC CPU 0 1 2 :::::: Main memory :

21

Modified EAGLE Instruction Formats

Type W15 11 10 8

constant

7 0

opcode unused

Type Y

Type Z

15 11 10 8

constant

7 0

Type X opcode ra

opcode unused

0237

opcode ra

0237