Weitere ähnliche Inhalte
Mehr von Dimitris Psounis (20)
ΠΛΗ10 ΜΑΘΗΜΑ 1.5 (ΕΚΤΥΠΩΣΗ)
- 1. 10
1: /
1.5:
MIPS
! " #$
A.
1. MIPS
1.
2.
3.
4.
1.
2.
5. ! " #
6. ! " $
! " #$ % &'()
% $
A. &
1. MIPS
1.
MIPS $ RISC :
• ' $ (' Assembly ' $ %$.
• ) % * 32 ' $% $0, $1, …, $32
• $0 ' '$ $ 0.
• # +( ' % .
• , $ 4bytes (32 bits)
• ( '$ - , % '( $% . $
:
*+ ++ + + + + + ! + "+#$ % +&'()
:
$ '$ + *$ 10 - $ . ( - $
$ ( ( '$ MIPS.
/ 0/
$ ( -1
$ ( -2
$ ( -3
….
$ ( -n
' $ (
- % ,
(Program Counter-PC)
$0 $2 $3 $4$1 $5 $31
0
A. &
1. MIPS
2. $ (' ! *$
$ (' ! *$ (li-load intermediate) # $ $
'$ $ .
#$ : li Rdest, Imm
% :
• Imm: '$ %
• Rdest: $ $ $
,+ ++ + + + + + ! + "+#$ % +&'()
- :
$ ( li $1, 10 # $ $1 $ 10.
1 : , % # $ $2 $ 5 $
$8 $ 12.
- 2. A. &
1. MIPS
3. ' $ ('
' $ (' $ $ % .
#$ :
% :
• Rdest,Rsrc1,Rsrc2: ' , imm %
• add: % *$ ( -#$ 2 - (* ) Rdest:=Rsrc1+Rsrc2
• addi: % - # ( -#$ 2 - (* ) Rdest:=Rsrc1+Imm
• sub: . *$ ( -#$ 2 - (* ) Rdest:=Rsrc1-Rsrc2
+ ++ + + + + + ! + "+#$ % +&'()
add Rdest, Rsrc1, Rsrc2
addi Rdest, Rsrc1, Imm
sub Rdest, Rsrc1, Rsrc2
- :
A$ $1 ' $ 5 $2 ' $ 3.
$ ( add $3, $1, $2 # $ $3 $ 8.
$ ( add $1, $1, $2 # $ $1 $ 8.
$ ( addi $1, $1, 2 # $ $1 $ 7.
$ ( sub $3, $1, $2 # $ $3 $ 2.
$0 $2 $3 $$1
0 35
1 : $ *$ $1,$2, $3 ' %(
:
-+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
3. ' $ ('
li $1, 7
li $2, 10
addi $3, $1, 2
add $3, $3, $3
sub $3, $2, $3
addi $2, $0, 8
A. &
1. MIPS
4. ' $ (' ( ' )
' $ (' ( #$ ( ' and, or, nand, nor, xor, not - - '
$ $ *$ $ '$ '
#$ :
% :
• Rdest,Rsrc,Rsrc1,Rsrc2: ' , Imm %
• and: ( % , 3 - - ' + ( ' Rsrc1 Rsrc2 Rdest
• $ or, nand, nor, xor, not
• andi: ( % , 3 - - ' + ( ' Rsrc Imm Rdest
•
.+ ++ + + + + + ! + "+#$ % +&'()
and Rdest, Rsrc1, Rsrc2
andi Rdest, Rsrc, Imm
- :
A$ $1 ' $ 5 $2 ' $ 3.
$ ( and $3, $1, $2 # $ $3 $ 1.
$ ( or $3, $1, $2 # $ $3 $ 7.
$ ( andi $3, $1, 2 # $ $1 $ 7.
$0 $2 $3$1
0 35
not Rdest, Rsrc
- :
A$ $1 ' $ 5
$ ( sll $1, $1, 1 # $ $1 $ 10.
.
00000000000000000000000000000101
A. &
1. MIPS
4. ' $ (' ( $ (' ( )
$ (' ( sll srl ( #$ - ( $ '$
.
#$ :
% :
• Rdest,Rsrc1 ' , Rsrc2 %
• sll: $ %( bits Rsrc1 Rsrc2 '
• $ Rsrc2=1 % - $ - ( % #
• srl: $ %( bits Rsrc1 Rsrc2 '
• $ Rsrc2=1 % - $ - ( % # ( % div 2)
/+ ++ + + + + + ! + "+#$ % +&'()
sll Rdest, Rsrc1, Rsrc2
$1
srl Rdest, Rsrc1, Rsrc2
00000000000000000000000000001010
$1
- 3. 1 : % $ $ *$ $1-$5 ' '(
;
0+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
4. ' $ ('
li $1, 11
andi $2, $1, 1
srl $1, $1, 1
andi $3, $1, 1
srl $1, $1, 1
andi $4, $1, 1
srl $1, $1, 1
andi $5, $1, 1
srl $1, $1, 1
A. &
1. MIPS
5. $ (' . (' ( $ (' # )
$ (' . (' (( 4 $ i '( $ $ (*$ $ (
$ # $ . & ( % ' (- ( - $ ):
#$ :
% :
• Rdest,Rsrc,Rsrc1,Rsrc2: '
• label: ' $ (
• (' $ ' $ *$ Rsrc1 Rsrc2 $ .
• $ $ $ - ( - $ ' label
• $ % $ + $ % $ $ (
+ ++ + + + + + ! + "+#$ % +&'()
beq Rsrc1, Rsrc2, label
$ 4 $ $ (' . (' (( :
#$ : bge Rsrc1, Rsrc2, label Rsrc1 Rsrc2 bgt Rsrc1, Rsrc2, label Rsrc1 Rsrc2
ble Rsrc1, Rsrc2, label Rsrc1 Rsrc2 blt Rsrc1, Rsrc2, label Rsrc1 Rsrc2
beq Rsrc1, Rsrc2, label Rsrc1 Rsrc2 bne Rsrc1, Rsrc2, label Rsrc1 Rsrc2
j label ! ! ( - $ !
1 1: $ %( *- ;
+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
5. $ (' . (' ( $ (' # )
bge $4, 0, label1
sub $4, $0, $4
label1:
addi $4, $4, 1
+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
5. $ (' . (' ( $ (' # )
:
$ (' - ( - # $ ( $ %" (% $ -
- )
. . %( *- ( '$ $ (% '( $ % $
R1 $ 0 $ $ (( 4 % $ $ 20. $ % % (( 4
% $ $ 30. % ' $ 4 $ '( .
…
beq $1, $0, ltrue
j lfalse
ltrue:
li $1, 20
j lexit:
lfalse:
li $1, 30
j lexit:
lexit:
….
$1=0
)33
$1 := 20 $1 := 30
- 4. *+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
5. $ (' . (' ( $ (' # )
:
$ (' - ( - # $ ( $ & (% $
- - )
. . %( *- ( '$ ( $ (*$ . '
…
li $1, 1
li $2, N
loop:
bgt $1, $2, lexit
addi $1, $1, 1
j loop
lexit:
….
$1>$2
$1 := 1
$2 :=
$1 := $1 + 1
NAI
OXI
…
1 2: $ %( *- ;
,+ ++ + + + + + ! + "+#$ % +&'()
A. &
1. MIPS
5. $ (' . (' ( $ (' # )
li $1, 0
li $2, 3
li $4, 0
li $5, 5
loop:
add $1, $1, $2
addi $4, $4, 1
bne $5, $4, loop
A. &
1. MIPS
6. $ (' . ! - '$ $
$ ( . - - '$ $ move .' % $ $% '$ $ ((
.
#$ :
% :
• Rdest,Rsrc '
• $ . % $ Rsrc $ Rdest
+ ++ + + + + + ! + "+#$ % +&'()
move Rdest, Rsrc
1 : $ %( *- ;
li $5, 0
move $4, $3
Loop1:
add $4, $4, $3
addi $5, $5, 1
bne $5, 4, Loop1