You are on page 1of 23

Nome: Marcelo Machado Aoyama

RA:11.112.083-8

Turma: 025

Exerccios do Captulo 4 da aula 4

Exerccio 01: Subrotina Ligao de subrotinas usando pilha

! Rotina Principal
.begin
.org 2048
addcc %r14,-4,%r14
st %r1,%r14
addcc %r14,-4,%r14
st %r2,%r14
call add_3
ld %r14,%r3
addcc %r14,4,%r14
! Subrotina

Perodo: Diurno

PC
800
h
804
h
808
h
80C
h
810
h
81c
h
820
h
824
h
828
h
82c
h
830
h
814
h
818
h

Assembly

Comentrios

addcc %r14, -4,

Condies iniciais
%r14 %r14 - 4

st %r1, %r14

%r14 %r1

addcc %r14, -4,

%r14 %r14 - 4

st %r2, %r14

%r14 %r2

call add_3

%r15 %pc
%pc %pc + (4*5 bytes)
* 20 = 14h

%14

%14

3:

ld %r14, %r8

%r8 %r14

addcc %r14, 4,

%r14 %r14 + 4

ld %r14, %r9

%r9 %r14

addcc %r8, %r9,

%r10 %r9 + %r8

st %r10, %r14

%r10 %r14

jmpl %r15, 4, %r0

%pc %r15 + 4

ld %r14, %r3

%r3 %r14

%r14

%r10

addcc %r14, 4,

%r14 %r14 + 4

%r14
Fim da simulao

PC

Assembly

x = 12
x=Ch

16
10h

%r14

PSR
n z

800h
804h
808h

addcc %r14, -4,


%14
st %r1, %r14
addcc %r14, -4,
st %r2, %r14

81ch
820h

ld %r14, %r8
addcc %r14, 4,

824h
828h
82ch
830h
814h
818h

%r2

35h

40h

%r3

%r8

%r9

%r10

%r14

v c
1

14h
10h

Ch

35h
810h

call add_3

40h
1

%r14

10h
35h

ld %r14, %r9
addcc %r8, %r9,

75h

%r10
st %r10, %r14
jmpl %r15, 4,

75h

75h

%r0
ld %r14, %r3
addcc %r14,
4, %r14

%r15

40h

%14

80C
h
810h

%r1

75h
14h

addcc %r14, -4, %r14

op

rd

op3

rs1

simm13

op3
0 1
2

op3
0
8

op3
0 1
2

st %r1, %r14
op
1 1

rd
0 0

rs1
1 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
0

addcc %r14, -4, %r14

op
0

rd
1 1

rs1
1 1

i
1

simm13
1 1
F

st %r2, %r14
op
1 1

rd
0 1

rs1
1 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
0

Call add_3

op
1

op3
0 0
0
op3
0
8

0
0

Disp30
0 0 0
0

ld %r14, %r8
op
1 1

rd
0 0

rs1
1 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
0

addcc %r14, 4, %r14

op
0

0
9

ld %r14, %r9

rd
1 1

0
C

1
3

rs1
1 1

i
1

0
A

0
0

simm13
0 0
0

0
4

op
1 1

rd
0 0

op3
0 0
0

op3
0 0
8

op3
1
2

op3
1 0
c

op3
0 0
0

op3
0 0
8

rs1
1 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
0

addcc %r8, %r9, %r10

op
1 0

rd
0 1

rs1
0 0

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
9

0
0

rs2
0 0
0

st %r10, %r14

op
1

rd
0 1

D
jmpl %r15 + 4,%r0
op
1 0

rd
0 0

rs1
1 1

i
0

0
0

0
0

0
0

rs1
1 1

0
0

0
0

0
0

0
i
1

0
0

simm13
0 0 0
0

ld %r14, %r3
op
1 1

rd
0 1

rs1
1 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
0

addcc %r14, 4, %r14

op
1 0

0
9

rd
1 1

1
3

rs1
1 1

i
1

0
A

0
0

simm13
0 0 0
0

0
4

Exerccio 2

.begin
a_start

loop:

done:
length:
address:

a:

.end

.org 2048
.equ 3000
ld [length], %r1
ld [address], %r2
andcc %r3, %r0, %r3
andcc %r1, %r1, %r0
be done
addcc %r1, -4, %r1
addcc %r1, %r2, %r4
ld %r4, %r5
addcc %r3, %r5, %r3
ba loop
jmpl %r15 + 4, %r0
20
a_start
.org a_start
25
-10
33
-5
7

PC

Assembly

x=
209
2
20

204
8
205
2
205
6
206
0
206
4
206
8
207
2
207
6
208
0
208
4
206
0
206
4
206
8
207
2
207
6
208
0
208
4
206
0
206

y=
209
6
300
0

z=
2072

PSR

n
0

z
0

%r1

%r4

%r5

20

Comentrios

%r1 M[%r0 + 2092]


300
0

%r2 M[%r0 + 2096]


%r3 %r3 and %r0

%r0 %r1 and %r1

Se z = 1 ir p/ done, seno
continua
%r1 %r1 4

16
301
6

%r1 %r2 + %r4


7

addcc %r3,
%r5, %r3
ba loop

%r5 %r4
%r3 %r5 + %r3
Salta para o label Loop
%r0 %r1 and %r1

Loop: andcc
%r1,%r1,%r0
be done
addcc %r1, -4,
%r1
addcc %r1,
%r2, %r4
ld %r4, %r5

addcc %r3,
%r5, %r3
ba loop

Loop: andcc
%r1,%r1,%r0
be done

%r1
5

Condies iniciais

ld [2096], %r2

addcc %r1, -4,


%r1
addcc %r1,
%r2, %r4
ld %r4, %r5

%r3

v c
0 0

ld [2092], %r1

andcc %r3, %r0,


%r3
Loop: andcc
%r1,%r1,%r0
be done

%r2

Se z = 1 ir p/ done, seno
continua
%r1 %r1 4

12
301
2

%r1 %r2 + %r4


-5

%r5 %r4
%r3 %r5 + %r3
Salta para o label Loop
%r0 %r1 and %r1
Se z = 1 ir p/ done, seno

Resultado de sethi x,%r1 lembrar que x = 2092 = 82Ch


22 bits mais significativos
0
0
1
0
0
0
0
0
0
2
0
Resultado de sethi x,%r2 lembrar que x = 2096 = 830h
0

10 bits menos significativos


0
0
0
0
0
0
0
0
0

10 bits menos significativos


0
0
0
0
0
0
0
0
0
0

22 bits mais significativos


0
0
0
1
0
0
0
0
2
0

ld [length], %r1

op
1

rd
0 0

op3
0
2

op3
0 1
2

op3
0
8

op3
0 0
8

rs1
0 0

i
1

simm13
0 1
2

simm13
0 0 1
3

rs2
0 1
3

ld [address], %r2
op
1 1

rd
0 0

rs1
0 0

i
1

0
0

andcc %r3, %r0, %r3

op
0

rd
0 1

rs1
0 0

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

andcc %r1, %r1, %r0

op
1 0

rd
0 0

rs1
0 0

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 0
1

be done

op
0

cond
0 0

op2
1 0

Disp22
1 0 0

addcc %r1, -4, %r1

op
0

rd
0 0

op3
0
8

op3
0
8

op3
0
0

op3
0
8

rs1
0 0

i
1

simm13
1 1
F

addcc %r1, %r2, %r4

op
0

rd
1 0

rs1
0 0

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 1
2

0
0

rs2
0 0
0

0
0

rs2
1 0
5

ld %r4, %r5

op
1

rd
1 0

rs1
1 0

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

addcc %r3, %r5, %r3

op
0

rd
0 1

rs1
0 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

ba loop
op
0 0

cond
1 0 0

0
0
jmpl %r15 + 4,%r0
1

op
0

op2
1 0

2
rd
0 0

op3
0

rs1
1 1

i
1

Disp22
1 0 0
8

0
0

simm13
0 0

! Exerccio 4.5
.begin
.org 2048
ld [k], %r1
addcc %r1, -4, %r1
st %r1, [k]
bneg X
ld %r1,[a], %r2
ld %r1,[b], %r3
addcc %r2, %r3, %r4
st %r4, %r1, [c]
ba Y
jmpl %r15 + 4, %r0

Y:

X:
k:

40
.org 2100

a: 0
.org 2200
b: 0
Exerccio 3

.org 2300
c: 0
.end

PC

Assembly

a=
210
0

b=
220
0

c=
230
0

k=
208
8
40

204
8
205
2
205
6
206
0
206
4
206
8
207
2
207
6
208
0

Y: ld
[2088], %r1
addcc %r1,
-4, %r1
st %r1, [k]

204
8
205
2
205
6
206
0
206
4
206
8
207
2
207
6
208
0

Y: ld
[2088], %r1
addcc %r1,
-4, %r1
st %r1, [k]

213
6

223
6

233
6

PSR

%r
1

%r2

%r3

%r4

n z v c
0 0 0 0
40

%r1 M[%r0 + 2088]

1 36

%r2 M[%r0 + 2096]


[K] %r1
Se n = 1 ir para X
6

%r2 M[%r1 + a]
4

%r3 M[%r1 + b]
10

10

%r4 %r2 + %r3


[c] M[%r4 + %r1]

Pulo incondicional p/ Y

36

%r1 M[%r0 + 2088]

1 32

%r2 M[%r0 + 2096]


[K] %r1

bneg X
ld %r1,[a],
%r2
ld %r1,[b],
%r3
addcc %r2,
%r3, %r4
st %r4,
%r1, [c]
ba Y

Comentrios

Condies iniciais

bneg X
ld %r1,[a],
%r2
ld %r1,[b],
%r3
addcc %r2,
%r3, %r4
st %r4,
%r1, [c]
ba Y

%r1
5

Se n = 1 ir para X
0

%r2 M[%r1 + a]
0

%r3 M[%r1 + b]
0

%r4 %r2 + %r3


[c] M[%r4 + %r1]

Pulo incondicional p/ Y

ld [k], %r1
op
1 1

rd
0 0

op3
0 0
2

op3
0
8

op3
0 1
2

rs1
0 0

i
1

simm13
0 0 1
2

simm13
1 1
F

simm13
0 0 1
2

addcc %r14, 4, %r14

op
0

rd
1 1

rs1
1 1

i
1

1
C

st %r1,[k]
op
1 1

rd
0 0

rs1
0 0

i
1

0
8

bneg X

op
0

cond
1 1

op2
1 0

Disp22
1 0 0
8

ld %r1, [a], %r2


1

op
1

rd
0 1

d
ld %r1, [b], %r3
1

op
1

rd
0 1

op3
0
0
op3
0

rs1
0 0

i
1

rs1
0 0

8
i
1

simm13
0 1
3
simm13
0 0

1
4

addcc %r2, %r3, %r4

op
0

rd
1 0

op3
0
8

op3
0 1
2

rs1
0 1

i
0

0
0

0
0

0
0

0
0

0
0

0
0

0
0

rs2
0 1
3

simm13
1 1 1
F

0
0
0

st %r4, %r1, [c]


op
1 1

rd
1 0

rs1
0 0

i
1

ba Y

op
0

cond
0 0

0
jmpl %r15 + 4,%r0
op
1 0

0
8

op2
1 0

op3
1 0
c

rd
0 0

1
3

rs1
1 1

i
1

1
e

Disp22
1 0 0
8

0
0

simm13
0 0 0
0

1
4

You might also like