COPE-03 Functions.indd
15
4
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
… …
… … … … … … … …
… …
… … … … …
15
2
3
Fu
n
ct
io
n
s
U
w
e
R
.
Z
im
m
er
–
T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
C
o
m
p
u
te
r
O
rg
an
is
at
io
n
&
P
ro
g
ra
m
E
xe
cu
ti
o
n
2
02
1
15
5
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
5
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
(G
re
at
n
es
s
fr
o
m
…
)
Sm
al
l
b
eg
in
n
in
gs
p
l
u
s
_
1
:
:
(
N
u
m
a
)
=
>
a
–
>
a
p
l
u
s
_
1
x
=
x
+
1
i
n
t
p
l
u
s
1
(
i
n
t
x
)
{
r
e
t
u
r
n
x
+
1
;
} f
u
n
c
t
i
o
n
P
l
u
s
_
1
(
x
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
x
+
1
)
;
d
e
f
p
l
u
s
1
(
x
)
:
r
e
t
u
r
n
x
+
1
;
p
u
r
e
f
u
n
c
t
i
o
n
p
l
u
s
_
1
(
x
)
i
n
t
,
i
n
t
e
n
t
(
i
n
)
:
:
x
i
n
t
:
:
p
l
u
s
_
1
p
l
u
s
_
1
=
x
+
1
;
e
n
d
f
u
n
c
t
i
o
n
;
f
u
n
c
t
i
o
n
P
l
u
s
_
1
(
x
:
i
n
t
e
g
e
r
)
:
i
n
t
e
g
e
r
;
b
e
g
i
n
P
l
u
s
_
1
:
=
x
+
1
;
e
n
d
;
15
3
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
3
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
R
ef
er
en
ce
s
fo
r
th
is
c
h
ap
te
r
[P
at
te
rs
o
n
17
]
D
av
id
A
. P
at
te
rs
o
n
&
J
o
h
n
L
. H
e
n
n
e
ss
y
C
o
m
p
u
te
r
O
rg
an
iz
at
io
n
a
n
d
D
e
si
g
n
–
T
h
e
H
ar
d
w
ar
e
/S
o
ft
w
ar
e
I
n
te
rf
ac
e
C
h
ap
te
r
2
“I
n
st
ru
ct
io
n
s:
L
an
g
u
ag
e
o
f
th
e
C
o
m
p
u
te
r”
A
R
M
e
d
it
io
n
, M
o
rg
an
K
au
fm
an
n
2
01
7
15
8
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
P
l
u
s
_
1
m
o
v
r
4
,
r
0
…
…
…
…
P
l
u
s
_
1
:
a
d
d
r
0
,
#
1
b
x
l
r
l
r
H
o
w
i
s
th
e
p
ar
am
e
te
r
x
p
as
se
d
?
W
h
e
re
d
o
y
o
u
fi
n
d
t
h
e
r
e
su
lt
a
ft
e
r
th
e
f
u
n
ct
io
n
r
e
tu
rn
s?
C
o
u
ld
i
t
b
e
d
o
n
e
d
if
fe
re
n
tl
y?
D
o
e
s
it
w
o
rk
?
15
6
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
6
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
P
l
u
s
_
1
m
o
v
r
4
,
r
0
…
…
…
…
P
l
u
s
_
1
:
a
d
d
r
0
,
#
1
b
x
l
r
15
9
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
9
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
a
d
d
r
0
,
#
1
m
o
v
r
4
,
r
0
…
…
…
…
C
an
/s
h
o
u
ld
t
h
is
a
lw
ay
s
b
e
d
o
n
e
?
T
h
is
i
s
ca
ll
e
d
in
li
n
in
g
15
7
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
5
7
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
P
l
u
s
_
1
m
o
v
r
4
,
r
0
…
…
…
…
P
l
u
s
_
1
:
a
d
d
r
0
,
#
1
b
x
l
r
l
r
16
2
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
P
l
u
s
_
2
m
o
v
r
3
,
r
0
…
…
…
…
P
l
u
s
_
2
:
…
b
l
P
l
u
s
_
1
b
l
P
l
u
s
_
1
…
b
x
l
r
P
l
u
s
_
1
:
a
d
d
r
0
,
#
1
b
x
l
r
b
x
l
r is
u
se
d
t
h
re
e
t
im
e
s
W
h
at
i
s
th
e
v
al
u
e
o
f
lr
i
n
e
ac
h
c
as
e
?
16
0
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
0
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
… …
… … … … … … … …
… …
… … … … …
… … … … … …
16
3
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
3
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
P
l
u
s
_
2
m
o
v
r
3
,
r
0
…
…
…
…
P
l
u
s
_
2
:
s
t
r
l
r
,
[
s
p
,
#
–
4
]
!
b
l
P
l
u
s
_
1
b
l
P
l
u
s
_
1
l
d
r
l
r
,
[
s
p
]
,
#
4
b
x
l
r
P
l
u
s
_
1
:
a
d
d
r
0
,
#
1
b
x
l
r
b
x
l
r is
u
se
d
t
h
re
e
t
im
e
s
W
h
at
i
s
th
e
v
al
u
e
o
f
lr
i
n
e
ac
h
c
as
e
?
16
1
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
1
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
(G
re
at
n
es
s
fr
o
m
…
)
Sm
al
l
b
eg
in
n
in
gs
p
l
u
s
_
2
:
:
(
N
u
m
a
)
=
>
a
–
>
a
p
l
u
s
_
2
x
=
p
l
u
s
_
1
$
p
l
u
s
_
1
x
i
n
t
p
l
u
s
2
(
i
n
t
x
)
{
r
e
t
u
r
n
p
l
u
s
1
(
p
l
u
s
1
(
x
)
)
;
} f
u
n
c
t
i
o
n
P
l
u
s
_
2
(
x
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
P
l
u
s
_
1
(
P
l
u
s
_
1
(
x
)
)
)
;
d
e
f
p
l
u
s
2
(
x
)
:
r
e
t
u
r
n
p
l
u
s
1
(
p
l
u
s
1
(
x
)
)
;
p
u
r
e
f
u
n
c
t
i
o
n
p
l
u
s
_
2
(
x
)
i
n
t
,
i
n
t
e
n
t
(
i
n
)
:
:
x
i
n
t
:
:
p
l
u
s
_
2
p
l
u
s
_
2
=
p
l
u
s
_
1
(
p
l
u
s
_
1
(
x
)
)
;
e
n
d
f
u
n
c
t
i
o
n
;
f
u
n
c
t
i
o
n
P
l
u
s
_
2
(
x
:
i
n
t
e
g
e
r
)
:
i
n
t
e
g
e
r
;
b
e
g
i
n
P
l
u
s
_
2
:
=
P
l
u
s
_
1
(
P
l
u
s
_
1
(
x
)
)
;
e
n
d
;
16
6
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
6
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
s
p
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
…
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
…
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
16
4
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
a
d
d
r
0
,
#
2
m
o
v
r
3
,
r
0
…
…
…
…
…
w
e
n
e
e
d
a
n
e
xa
m
p
le
, w
h
e
re
a
c
o
m
p
il
e
r
w
il
l
n
o
t
ju
st
r
e
m
o
ve
a
ll
o
u
r
co
d
e
!
16
7
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
7
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
s
p
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
…
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
…
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
1
6
7
f
b
x
l
r
…
w
h
e
re
d
o
e
s
th
is
l
e
ad
u
s?
16
5
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
5
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
(G
re
at
n
es
s
fr
o
m
…
)
Sm
al
l
b
eg
in
n
in
gs
f
i
b
_
f
a
c
t
:
:
(
N
u
m
a
)
=
>
a
–
>
a
f
i
b
_
f
a
c
t
x
=
(
f
i
b
x
)
+
(
f
a
c
t
x
)
u
n
s
i
g
n
e
d
i
n
t
f
i
b
F
a
c
t
(
u
n
s
i
g
n
e
d
i
n
t
x
)
{
r
e
t
u
r
n
f
i
b
(
x
)
+
f
a
c
t
(
x
)
;
} f
u
n
c
t
i
o
n
F
i
b
_
F
a
c
t
(
x
:
N
a
t
u
r
a
l
)
r
e
t
u
r
n
N
a
t
u
r
a
l
i
s
(
F
i
b
(
x
)
+
F
a
c
t
(
x
)
)
;
d
e
f
f
i
b
F
a
c
t
(
x
)
:
r
e
t
u
r
n
f
i
b
(
x
)
+
f
a
c
t
(
x
)
;
p
u
r
e
f
u
n
c
t
i
o
n
f
i
b
_
f
a
c
t
(
x
)
i
n
t
,
i
n
t
e
n
t
(
i
n
)
:
:
x
i
n
t
:
:
f
i
b
_
f
a
c
t
f
i
b
_
f
a
c
t
=
f
i
b
(
x
)
+
f
a
c
t
(
x
)
;
e
n
d
f
u
n
c
t
i
o
n
;
f
u
n
c
t
i
o
n
F
i
b
_
F
a
c
t
(
x
:
c
a
r
d
i
n
a
l
)
:
c
a
r
d
i
n
a
l
;
b
e
g
i
n
F
i
b
_
F
a
c
t
:
=
F
i
b
(
x
)
+
F
a
c
t
(
x
)
;
e
n
d
;
17
0
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
0
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
m
d
b
s
p
!
,
{
r
4
,
l
r
}
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
l
d
m
i
a
s
p
!
,
{
r
4
,
l
r
}
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
Fib_
Fact
r
4
s
p
l
r
16
8
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
r
l
r
,
[
s
p
,
#
–
4
]
!
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
l
d
r
l
r
,
[
s
p
]
,
#
4
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
l
r
s
p
17
1
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
1
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
m
d
b
s
p
!
,
{
r
4
,
l
r
}
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
l
d
m
i
a
s
p
!
,
{
r
4
,
l
r
}
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
Fib_
Fact
r
4
s
p
l
r
n
iv
er
si
ty
p
ag
e
1
7
y
i
itW
h
at
h
ap
p
e
n
s
to
o
u
r
p
ar
am
e
te
r
x
(
1)
d
u
ri
n
g
t
h
e
f
u
n
ct
io
n
?
16
9
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
6
9
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
r
l
r
,
[
s
p
,
#
–
4
]
!
…
…
…
b
l
F
i
b
m
o
v
r
4
,
r
0
…
b
l
F
a
c
t
a
d
d
r
0
,
r
4
…
l
d
r
l
r
,
[
s
p
]
,
#
4
b
x
l
r
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
l
r
s
p
N
p
ag
e
1
6
9
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
y
r
4
…
w
h
at
i
f
th
is
w
as
h
o
ld
in
g
s
o
m
e
i
n
fo
rm
at
io
n
at
t
h
e
t
im
e
w
h
e
n
w
e
w
e
re
c
al
le
d
?
17
4
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
m
d
b
s
p
!
,
{
r
4
,
f
p
,
l
r
}
a
d
d
f
p
,
s
p
,
#
8
s
u
b
s
p
,
#
4
s
t
r
r
0
,
[
f
p
,
#
–
1
2
]
b
l
F
i
b
m
o
v
r
4
,
r
0
l
d
r
r
0
,
[
f
p
,
#
–
1
2
]
b
l
F
a
c
t
a
d
d
r
0
,
r
4
a
d
d
s
p
,
#
4
l
d
m
i
a
s
p
!
,
{
r
4
,
f
p
,
l
r
}
b
x
l
r
Fib_Fact
r
4
f
p
f
p
l
r
x
(
1
)
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
4
o
f
y
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
4
y
K
e
e
p
in
g
a
r
e
fe
re
n
ce
t
o
t
h
e
s
ta
rt
o
f
th
e
S
ta
ck
F
ra
m
e
fo
r
th
is
f
u
n
ct
io
n
(
w
it
h
t
h
e
f
ra
m
e
-p
o
in
te
r
fp
)
m
ak
e
s
th
in
g
s
n
e
at
e
r
an
d
e
n
ab
le
s
st
ru
ct
u
re
d
a
cc
e
ss
t
o
t
h
e
d
yn
am
ic
c
o
n
te
xt
.
17
2
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
m
d
b
s
p
!
,
{
r
4
,
l
r
}
…
s
u
b
s
p
,
#
4
s
t
r
r
0
,
[
s
p
]
b
l
F
i
b
m
o
v
r
4
,
r
0
l
d
r
r
0
,
[
s
p
]
b
l
F
a
c
t
a
d
d
r
0
,
r
4
a
d
d
s
p
,
#
4
l
d
m
i
a
s
p
!
,
{
r
4
,
l
r
}
b
x
l
r
Fib_
Fact
r
4
s
p
l
r
x
(
3
)
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
17
5
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
5
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
R
ec
u
rs
iv
e
u
n
s
i
g
n
e
d
i
n
t
f
i
b
(
u
n
s
i
g
n
e
d
i
n
t
x
)
{
s
w
i
t
c
h
(
x
)
{
c
a
s
e
0
:
r
e
t
u
r
n
0
;
c
a
s
e
1
:
r
e
t
u
r
n
1
;
d
e
f
a
u
l
t
:
r
e
t
u
r
n
f
i
b
(
x
–
1
)
+
f
i
b
(
x
–
2
)
;
}
}
f
u
n
c
t
i
o
n
F
i
b
(
x
:
N
a
t
u
r
a
l
)
r
e
t
u
r
n
N
a
t
u
r
a
l
i
s
(
c
a
s
e
x
i
s
w
h
e
n
0
=
>
0
,
w
h
e
n
1
=
>
1
,
w
h
e
n
o
t
h
e
r
s
=
>
F
i
b
(
x
–
1
)
+
F
i
b
(
x
–
2
)
)
;
u
n
s
i
g
n
e
d
i
n
t
f
a
c
t
(
u
n
s
i
g
n
e
d
i
n
t
x
)
{
i
f
(
x
=
=
0
)
r
e
t
u
r
n
1
;
e
l
s
e
r
e
t
u
r
n
x
*
f
a
c
t
(
x
–
1
)
;
} f
u
n
c
t
i
o
n
F
a
c
t
(
x
:
N
a
t
u
r
a
l
)
r
e
t
u
r
n
P
o
s
i
t
i
v
e
i
s
(
i
f
x
=
0
t
h
e
n
1
e
l
s
e
x
*
F
a
c
t
(
x
–
1
)
)
;
W
il
l
o
u
r
st
ac
k
h
an
d
li
n
g
w
o
rk
fo
r
re
cu
rs
iv
e
f
u
n
ct
io
n
s?
17
3
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
3
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
…
…
…
m
o
v
r
0
,
#
1
b
l
F
i
b
_
F
a
c
t
m
o
v
r
3
,
r
0
…
…
…
…
F
i
b
_
F
a
c
t
:
s
t
m
d
b
s
p
!
,
{
r
4
,
l
r
}
…
s
u
b
s
p
,
#
4
s
t
r
r
0
,
[
s
p
]
b
l
F
i
b
m
o
v
r
4
,
r
0
l
d
r
r
0
,
[
s
p
]
b
l
F
a
c
t
a
d
d
r
0
,
r
4
a
d
d
s
p
,
#
4
l
d
m
i
a
s
p
!
,
{
r
4
,
l
r
}
b
x
l
r
Fib_
Fact
r
4
s
p
l
r
x
(
3
)
F
i
b
:
…
…
…
b
x
l
r
F
a
c
t
:
…
…
…
b
x
l
r
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
y
W
h
il
e
a
d
d
re
ss
in
g
v
ia
t
h
e
s
p
i
s
p
o
ss
ib
le
, i
t
m
ay
a
ls
o
b
e
co
m
p
le
x
to
k
e
e
p
t
ra
ck
o
f,
a
s
th
e
s
p
m
ay
c
h
an
g
e
f
u
rt
h
e
r.
17
8
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
1
7
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
A
c
o
m
p
il
e
r
w
il
l
li
k
e
ly
re
p
la
ce
s
u
ch
a
r
e
cu
rs
io
n
!
u
n
s
i
g
n
e
d
i
n
t
f
a
c
t
(
u
n
s
i
g
n
e
d
i
n
t
x
)
{
i
f
(
x
=
=
0
)
r
e
t
u
r
n
1
;
e
l
s
e
r
e
t
u
r
n
x
*
f
a
c
t
(
x
–
1
)
;
}
1
7
8
f
4
8
7
(
h
3
“F
i
”
2
7
u
n
s
i
g
n
e
d
i
n
t
f
a
c
t
(
u
n
s
i
g
n
e
d
i
n
t
x
)
{
i
n
t
f
a
c
=
1
;
f
o
r
(
i
=
1
,
i
< = x , i + + ) { f a c = f a c * i ; } r e t u r n f a c ; } 17 6 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 7 6 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) Fib_FactFact 1Fact 0 Fact 2 Fact 3 f p r 4 f p f p l r f p x ( 3 ) l r f p x ( 3 ) l r x ( 2 ) f p l r x ( 1 ) f p l r x ( 0 ) f p f p f p s p F a c t : s t m d b s p ! , { f p , l r } a d d f p , s p , # 4 s u b s p , # 4 s t r r 0 , [ f p , # - 8 ] c m p r 0 , # 0 b n e C a s e _ O t h e r s m o v r 0 , # 1 b E n d _ F a c t C a s e _ O t h e r s : s u b r 0 , # 1 b l F a c t m o v r 1 , r 0 l d r r 0 , [ f p , # - 8 ] m u l r 0 , r 1 E n d _ F a c t : a d d s p , # 4 l d m i a s p ! , { f p , l r } b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} W h e re i s th e l as t lr s to re d ? H o w h ig h d o w e s ta ck ? F a c t I s F a c t r ee n tr an t? 17 9 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 7 9 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : a d d s r 3 , r 0 , # 0 m o v r 0 , # 1 b e q E n d _ F a c t F a c t _ L o o p : m u l r 0 , r 3 s u b s r 3 , # 1 b n e F a c t _ L o o p E n d _ F a c t : b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} F i b : … … … b x l r , T h e A u st ra li an N at io n al U n iv er si ty p ag e y 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p a y B e si d e s al l th e i n li n in g , u n ro ll in g , fl a tt e n in g , e tc . : S ta ck o p e ra ti o n s ar e s ti ll v it al f o r an y n o n -t ri vi al p ro g ra m . C o m p le xi ty ? R u n ti m e s? I s F a c t r ee n tr an t? Fib_Fact r 4 f p f p l r x ( 3 ) 17 7 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 7 7 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A c o m p il e r w il l li k e ly re p la ce s u ch a r e cu rs io n ! 1 7 7 f 4 8 7 ( h 3 “F i ” 2 7 f u n c t i o n F a c t ( x : N a t u r a l ) r e t u r n P o s i t i v e i s F a c : P o s i t i v e : = 1 ; b e g i n f o r i i n 1 . . x l o o p F a c : = F a c * i ; e n d l o o p ; r e t u r n F a c ; e n d F a c t ; f u n c t i o n F a c t ( x : N a t u r a l ) r e t u r n P o s i t i v e i s ( i f x = 0 t h e n 1 e l s e x * F a c t ( x - 1 ) ) ; 18 2 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 2 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r tytytytyy F i b : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] c m p r 0 , # 0 b e q E n d _ F i b c m p r 0 , # 1 b e q E n d _ F i b s u b r 0 , r 0 , # 1 b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] s u b r 0 , r 0 , # 2 b l F i b a d d r 0 , r 4 , r 0 E n d _ F i b : a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r Fib_Fact r 4 f p f p l r x ( 3 ) 18 0 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 0 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : a d d s r 3 , r 0 , # 0 m o v r 0 , # 1 b e q E n d _ F a c t F a c t _ L o o p : m u l r 0 , r 3 s u b s r 3 , # 1 b n e F a c t _ L o o p E n d _ F a c t : b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} F i b : … … … b x l r … … b x l r W h y d o w e s av e r 4? B u t w e d o n ’t s av e r 3? Fib_Fact r 4 f p f p l r x ( 3 ) 18 3 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 3 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r tyttytyy F i b : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] c m p r 0 , # 0 b e q E n d _ F i b c m p r 0 , # 1 b e q E n d _ F i b s u b r 0 , r 0 , # 1 b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] s u b r 0 , r 0 , # 2 b l F i b a d d r 0 , r 4 , r 0 E n d _ F i b : a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r Fib_Fact r 4 f p f p l r x ( 3 ) p p r4 , r 0 4 , r 0 0 , [ f p , # - 1 2 ] a c t 0 , r 0 , r 4 p , # 4 p ! , { r 4 , f p , l r } r T h e re c o u ld b e tw o fu rt h e r Fi b -c al ls fo r e ac h c al l to F ib … W h at w o u ld t h e st ac k l o o k l ik e ? W h at w o u ld b e th e m ax im al d e p th fo r th e s ta ck ? 18 1 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 1 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : a d d s r 3 , r 0 , # 0 m o v r 0 , # 1 b e q E n d _ F a c t F a c t _ L o o p : m u l r 0 , r 3 s u b s r 3 , # 1 b n e F a c t _ L o o p E n d _ F a c t : b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} F i b : … … … b x l r F a c t : b }} b x l r W e k e e p a c o p y o f r0 h e re . B u t w e d o n ’t k e e p a co p y o f r0 h e re ! Fib_Fact r 4 f p f p l r x ( 3 ) 18 6 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 6 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) C o n ve n ti o n s A R M a rc h it e ct u re c al lin g p ra ct ic e • r0 -r 3 ar e u se d f o r p ar am e te rs . • r0 -r 1 ar e u se d f o r re tu rn v al u e s. • r0 -r 3 ar e n o t e xp e ct e d t o b e i n ta ct a ft e r a fu n ct io n c al l … a ll o th e r re g is te rs a re e xp e ct e d t o b e i n ta ct ! I f th o se r e g is te rs d o n o t su ffi c e , a d d it io n al p ar am e te rs an d r e su lt s ar e p as se d v ia t h e s ta ck . C o n ve n ti o n s a re d if fe re n t in o th e r a rc h it e c tu re s (e .g . x 8 6 , w h e re p a ra m e te rs a re g e n e ra ll y p a ss e d v ia t h e s ta c k ). f h W h y a re t h e se c o n ve n ti o n s a rc h it e c tu re r e la te d a t a ll ? T h e re a re a ls o m e m o ry a li g n m e n t c o n st ra in ts . (M o st ly d u e t o m e m o ry b u s c o n st ra in ts ) 18 4 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 4 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) C o m p o n en ts / p h as es o f a fu n ct io n c al l: • V al u e s (p ar am et er s) t o b e p as se d t o a f u n ct io n . • Lo ca l va ri ab le s in si d e a f u n ct io n . • V al u e s (r es u lt s) t o b e r e tu rn e d f ro m a f u n ct io n . S o f ar w e : … p as se d p ar am et er v al u e s in r e g is te rs ( r0 - r 3) . … c al le d t h e fu n ct io n ( st o re t h e r e tu rn a d d re ss a n d j u m p t o t h e b e g in n in g o f th e f u n ct io n ). … p u sh ed t h e r e tu rn a d d re ss , t h e p re vi o u s st ac k f ra m e a n d u se d r e g is te rs ( r4 … ). … c re at ed a n ew s ta ck f ra m e (a n d a d d re ss e d a ll l o ca l va ri ab le s re la ti ve t o t h is ). … g re w t h e st ac k su ch t h at i t ca n h o ld t h e l o ca l va ri ab le s. … d o n e th e ca lc u la ti o n s/ o p er at io n s b as e d o n t h e l o ca l va ri ab le s an d s cr at ch r e g is te rs . … p as se d r et u rn v al u es i n r e g is te rs ( r0 - r 1) . … r es to re d t h e st ac k p o in te r (a n d t h u s d e -a ll o ca te d a ll l o ca l va ri ab le s) . … p o p p ed t h e r e tu rn a d d re ss , t h e p re vi o u s st ac k f ra m e a n d u se d r e g is te rs ( r4 … ). … ju m p ed b ac k to t h e n e xt i n st ru ct io n a ft e r th e o ri g in al f u n ct io n c al l. … u se d t h e re tu rn v al u es f o u n d i n r 0 - r1 . P ro lo g u e Ep il o g u e 18 7 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 7 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) Pa ra m et er p as si n g C al l b y … A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . 18 5 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 5 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) P ro lo g u e Ep il o g u e C o m p o n en ts / p h as es o f a fu n ct io n c al l: • V al u e s (p ar am et er s) t o b e p as se d t o a f u n ct io n . • Lo ca l va ri ab le s in si d e a f u n ct io n . • V al u e s (r es u lt s) t o b e r e tu rn e d f ro m a f u n ct io n . S o f ar w e : … p as se d p ar am et er v al u e s in r e g is te rs ( r0 - r 3) . … c al le d t h e fu n ct io n ( st o re t h e r e tu rn a d d re ss a n d j u m p t o t h e b e g in n in g o f th e f u n ct io n ). … p u sh ed t h e r e tu rn a d d re ss , t h e p re vi o u s st ac k f ra m e a n d u se d r e g is te rs ( r4 … ). … c re at ed a n ew s ta ck f ra m e (a n d a d d re ss e d a ll l o ca l va ri ab le s re la ti ve t o t h is ). … g re w t h e st ac k su ch t h at i t ca n h o ld t h e l o ca l va ri ab le s. … d o n e th e ca lc u la ti o n s/ o p er at io n s b as e d o n t h e l o ca l va ri ab le s an d s cr at ch r e g is te rs . … p as se d r et u rn v al u es i n r e g is te rs ( r0 - r 1) . … r es to re d t h e st ac k p o in te r (a n d t h u s d e -a ll o ca te d a ll l o ca l va ri ab le s) . … p o p p ed t h e r e tu rn a d d re ss , t h e p re vi o u s st ac k f ra m e a n d u se d r e g is te rs ( r4 … ). … ju m p ed b ac k to t h e n e xt i n st ru ct io n a ft e r th e o ri g in al f u n ct io n c al l. … u se d t h e re tu rn v al u es f o u n d i n r 0 - r1 . W h at h ap p e n s if t h e p ar am e te rs o r re tu rn v al u e s w o n ’t fi t i n to r e g is te rs ? 19 0 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 0 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . P yt h o n A ll p ar am e te r ac ce ss i s d o u b le -i n d ir e ct ( h an d le s) . b y re fe re n ce A cc e ss b … t h is h as a n i m p ac t o n p e rf o rm an ce . 18 8 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 8 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . b y co p y y p y y p y y p y b y re fe re n ce yyy A cc e ss b y co p y b y re fe re n ce C Fu ll c o n tr o l o ve r th o se t h re e m o d e s. “b y va lu e ” p ar am e te rs a re l o ca l va ri ab le s. “i n & o u t, b y re fe re n ce ” sy n ta ct ic al ly a s “b y p o in te r va lu e ” p ar am e te rs . 19 1 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 1 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A cc e ss A d a Li m it e d c o n tr o l o ve r “b y va lu e r e su lt ”. “b y va lu e ” p ar am e te rs a re c o n st an ts . 18 9 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 8 9 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . H as k e ll O n ly c o n tr o l o ve r in fo rm at io n fl o w – n o t o ve r ac ce ss . tttt etetetetetettteeeee si ty p ag e 1 8 9 o f y 4 8 7 (c h ap te r 3 : “F u n ct io n s 7 n oooooooooo r is co p ie d to a lo ca l F ti r is c o p ie d t o a l o ca l an d c o p ie d b ac k a t re tu rn . Fu n ct io n c an r e ad a n d w ri t ti m e . O u ts id e c o d e s h al l n “i n & o u t” p ar am e te rs a re s id e -e ff e ct in g a n d c an th e re fo re n o t e xi st i n a p u re f u n ct io n al l an g u ag e . 19 4 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 4 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) Fib_FactFact 1Fact 0 Fact 2 Fact 3 F a c t : s t m d b s p ! , { f p , l r } a d d f p , s p , # 4 s u b s p , # 4 s t r r 0 , [ f p , # - 8 ] c m p r 0 , # 0 b n e C a s e _ O t h e r s m o v r 0 , # 1 b E n d _ F a c t C a s e _ O t h e r s : s u b r 0 , # 1 b l F a c t m o v r 1 , r 0 l d r r 0 , [ f p , # - 8 ] m u l r 0 , r 1 E n d _ F a c t : a d d s p , # 4 l d m i a s p ! , { f p , l r } b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 l d r r 0 , [ f p , # - 1 2 ] b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} f p r 4 f p f p l r f p x ( 3 ) l r f p x ( 3 ) l r x ( 2 ) f p l r x ( 1 ) f p l r x ( 0 ) f p f p f p s p H o w a b o u t u si n g c al l b y re fe re n ce h e re ? 19 2 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 2 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A ss e m b ly “B y re fe re n ce ” se m an ti cs b y co n ve n ti o n o n ly . 19 5 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 5 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : s t m d b s p ! , { r 5 , f p , l r } a d d f p , s p , # 4 m o v r 5 , r 0 l d r r 0 , [ r 5 ] c m p r 0 , # 0 b n e C a s e _ O t h e r s m o v r 0 , # 1 b E n d _ F a c t C a s e _ O t h e r s : s u b r 0 , # 1 s t r r 0 , [ r 5 ] m o v r 0 , r 5 b l F a c t m o v r 1 , r 0 l d r r 0 , [ r 5 ] m u l r 0 , r 1 E n d _ F a c t : m o v s p , f p l d m i a s p ! , { r 5 , f p , l r } b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 s u b r 0 , f p , # 1 2 b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} tytyy r5 h as b e e n n o m in at e d t o h o ld th e r e fe re n ce t o x i n si d e F a c t Fib_FactFact 1Fact 0 Fact 2 Fact 3 r 5 r 4 f p f p f p f p l r l r r 5 x ( 0 ) f p l r r 5 f p l r r 5 f p l r f p f p f p s p Fac Fac Fac FFacact r 5 Fac Fac Fac Fac Fac Fac Facttttt r 5 Fac Fac Fac Fac Fac Fac FFactttt r 5 Fac Fac Fac Fac Fac Fac Fac Fttttt r 5 19 3 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 3 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) Pa ra m et er p as si n g C al l b y n am e … i s co n ce p tu al ly a c al l- b y- va lu e , w h e re t h e v al u e h as n o t b e e n c al cu la te d y e t. Te ch n ic al ly a r e fe re n ce t o a f u n ct io n i s p as se d a n d t h e e va lu at io n o f th is p ar am e te r (f u n ct io n ) is l e ft t o t h e c al le d f u n ct io n . Fe at u re s: • V al u e s ar e o n ly e va lu at e d i f an d w h e n t h e y ar e n e e d e d . • V al u e s ca n c h an g e d u ri n g t h e l if e -t im e o f a fu n ct io n ( in c as e o f si d e -e ff e ct in g f u n ct io n s) . • V al u e s ca n b e s to re d o n ce c al cu la te d ( in c as e o f si d e -e ff e ct -f re e f u n ct io n s) . W h il e t h is i s p o ss ib le t o a d e g re e i n m o st p ro g ra m m in g l an g u ag e s … (e ve n i f th e re i s n o s p e ci fi c p as si n g m o d e , y o u c an s ti ll p as s a re fe re n ce t o a f u n ct io n ) … i t is a c o re c o n ce p t fo r fu n ct io n al , l az y e va lu at io n l an g u ag e s, l ik e e .g . H as k e ll , an d i t d o e s fi n d i ts w ay b ac k i n to m ai n st re am l an g u ag e s li k e C + + , . N ET l an g u ag e s o r P yt h o n as a n o n ym o u s fu n ct io n s (s o m e ti m e s re fe rr e d t o a s m -f u n ct io n s o r m -e xp re ss io n s) . Po p s u p i n p ro g ra m m in g la n g u ag e s si n ce t h e 6 0’ s. 19 8 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 8 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) Pa ra m et er p as si n g C al l b y … A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) 7 f 4 8 7 ( h 3 Y e t w e u se d t h is m o d e e N o r e ad a cc e ss f ro m i n si d e t h e )) e b y re fe re n ce ( m u ta b le , n o r ea d ) N d f i id th W e s h o u ld h av e u se d e it h e r o f th o se m o d e s 19 6 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 6 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : s t m d b s p ! , { r 5 , f p , l r } a d d f p , s p , # 4 m o v r 5 , r 0 l d r r 0 , [ r 5 ] c m p r 0 , # 0 b n e C a s e _ O t h e r s m o v r 0 , # 1 b E n d _ F a c t C a s e _ O t h e r s : s u b r 0 , # 1 s t r r 0 , [ r 5 ] m o v r 0 , r 5 b l F a c t m o v r 1 , r 0 l d r r 0 , [ r 5 ] m u l r 0 , r 1 E n d _ F a c t : m o v s p , f p l d m i a s p ! , { r 5 , f p , l r } b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 s u b r 0 , f p , # 1 2 b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r }} tytyy W e t u rn e d F a c t i n to th e c o n st an t 0. Fib_FactFact 1Fact 0 Fact 2 Fact 3 r 5 r 4 f p f p l r l r r 5 x ( 0 ) f p l r r 5 f p l r r 5 f p l r f p s p Fac Fac Fac FFacactt r 5 Fac Fac Fac Fac Fac Fac Facttttt r 5 Fac Fac Fac Fac Fac FFac Factttt r 5 Fac Fac Fac Fac Fac Fac FFacttttt r 5 r 5 r 4 f p f p f p l r l r r 5 x ( 0 f p l r r 5 f p l r r 5 f p l r f p f p f p f p f p f p f p f p fff p f p f p f p , s p , # 4 r 5 , r 0 r 0 , [ r 5 ] r 0 , # 0 C a s e _ O t h e r s r 0 , # 1 E n d _ F a t h e r s r 000 , ## 1 # r 0 , [ r 555 ] r 0 , r 5 F a c t r 1 , r 0 r 0 , [ r 5 ] r 0 , r 1 c t : s iiii 5 ]] r 1 iiiiiiiiiiii s _ F _ F _ FF _ FFFFFFFFF _ FFFFFFFF a c a c a c a c a c a c a c a c a c a c aaa c a c a c a c a c a c aaa c t a c t a c a c aaa c t aa ccc s : s : s : s : s : sss : ssssssss : ssss : sss : ssss : ss : s : ss : 0 # 1 5 ]]]]]]]]]]]]]]]]]]]]]]]]] r 1 r 1 r 1 r 1 r 111 r 1 r 11111111 r 1111 r 111111 r 11 f p s p s p s p s p s p s p s p s p s p sss p s p s p s p s p s p s p ss p s p s p s p s p s p s p s p s p s p ss p s pppp l rp ! , { r 5 , p f pp , l r } lll c t : c iiiiiii s p , f p f p fff ii aaa s p s p sss p ! , { r 5 , f p , l r } f p c t : ii s p ssss p i a i a i a i a i W h at d id w e o ve rl o o k ? 19 9 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 9 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A W h e n t o u se w h at ? 19 7 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 1 9 7 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) F a c t : s t m d b s p ! , { r 5 , f p , l r } a d d f p , s p , # 4 m o v r 5 , r 0 l d r r 0 , [ r 5 ] c m p r 0 , # 0 b n e C a s e _ O t h e r s m o v r 0 , # 1 b E n d _ F a c t C a s e _ O t h e r s : s u b r 0 , # 1 s t r r 0 , [ r 5 ] m o v r 0 , r 5 b l F a c t m o v r 1 , r 0 l d r r 0 , [ r 5 ] m u l r 0 , r 1 E n d _ F a c t : m o v s p , f p l d m i a s p ! , { r 5 , f p , l r } b x l r F i b _ F a c t : s t m d b s p ! , { r 4 , f p , l r } a d d f p , s p , # 8 s u b s p , # 4 s t r r 0 , [ f p , # - 1 2 ] b l F i b m o v r 4 , r 0 s u b r 0 , f p , # 1 2 b l F a c t a d d r 0 , r 0 , r 4 a d d s p , # 4 l d m i a s p ! , { r 4 , f p , l r } b x l r tytyy p , F i b d b ! { 4 f m d b s p ! , { r 4 , f p , l r d f p , s p , # 8 b s p , # 4 r r 0 , [ f p , # - 1 2 ] }} W h at i s th e v al u e o f x d u ri n g o n e e xe cu ti o n o f F a c t ? Fib_FactFact 1Fact 0 Fact 2 Fact 3 r 5 r 4 f p f p f p f p l r l r r 5 x ( 0 ) f p l r r 5 f p l r r 5 f p l r f p f p f p s p Fac Fac Fac FFacactt r 5 Fac Fac Fac Fac Fac Fac Facttttt r 5 Fac Fac Fac Fac Fac Fac FFactttt r 5 Fac Fac Fac Fac Fac Fac Fac Fttttt r 5 20 2 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 2 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A Fu n ct io n s Tw o -w ay a n d b y- re fe re n ce S id e -e ff e ct in g a n d p ar ti cu la r ca re i s re q u ir e d a s m u lt ip le e n ti ti e s co u ld w ri te o n t h is . N o d at a h as t o b e r e p li ca te d . V al u e s h av e t o b e p as se d i n m e m o ry . 20 0 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 0 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A Fu n ct io n s O n e -w ay a n d b y- co p y T h o se a re s id e -e ff e ct -f re e a n d h e n ce t h e r e su lt in g s ce n ar io s ar e e as y to a n al ys e . C o p yi n g l ar g e d at a st ru ct u re s m ig h t b e t im e c o n su m in g o r in fe as ib le . V al u e s ca n b e p as se d i n r e g is te rs . 20 3 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 3 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A Fu n ct io n s O n e -w ay -O u t an d b y- re fe re n ce S id e -e ff e ct -f re e , i f n e w m e m o ry i s al lo ca te d o n r e tu rn – ca n n o t b e e n fo rc e d o n a ss e m b ly l e ve l (r e q u ir e s co m p il e r) . V al u e s h av e t o b e p as se d i n m e m o ry . 20 1 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 1 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A Fu n ct io n s Tw o -w ay a n d b y- co p y S ti ll s id e -e ff e ct -f re e w it h in t h e f u n ct io n ( b u t n o t o n t h e o u ts id e ). Po te n ti al ly m o re c o n ve n ie n t as m e m o ry s p ac e c an b e r e u se d . V al u e s ca n b e p as se d i n r e g is te rs . 20 6 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 6 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) G en er ic S ta ck -F ra m e T h e c u rr e n t co d e p re p ar e d t o c al l a fu n ct io n : P u sh p ar am e te rs o n t h e s ta ck . W o rk s fo r an y d at a si ze ( u n le ss t h e s ta ck o ve rfl o w s) an d p ar am e te r p as si n g m o d e . p ag e 2 0 6 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 7 f h f h (G lo b al ) va ri ab le s S B S P Pa ra m et er s © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 (G lo b al ) va ri ab le s S B S P Pa ra m et er s a Ty p e s, s to ra g e s tr u ct u re s an d p as si n g m o d e s h av e t o b e a g re e d u p o n b e tw e e n c al le r an d c al le e . 20 4 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 4 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) A cc e ss b y co p y b y re fe re n ce In fo rm at io n fl o w in b y va lu e Pa ra m e te r b e co m e s a co n st an t in si d e t h e f u n ct io n o r is co p ie d i n to a l o ca l va ri ab le . b y re fe re n ce ( im m u ta b le ) N o w ri te a cc e ss i s al lo w e d w h il e t h e f u n ct io n r u n s (a ls o fr o m o u ts id e t h e f u n ct io n ). o u t b y re su lt C al li n g f u n ct io n e xp e ct s th e p ar am e te r va lu e t o a p p e ar i n a sp e ci fi c sp ac e a t re tu rn . b y re fe re n ce ( m u ta b le , n o r ea d ) N o r e ad a cc e ss f ro m i n si d e t h e fu n ct io n , w ri te a cc e ss o n r e tu rn . in & o u t b y va lu e re su lt Pa ra m e te r is c o p ie d t o a l o ca l va ri ab le a n d c o p ie d b ac k a t re tu rn . b y re fe re n ce ( m u ta b le ) Fu n ct io n c an r e ad a n d w ri te a t an y ti m e . O u ts id e c o d e s h al l n o t w ri te . A Fu n ct io n s O n e -w ay -I n a n d b y- re fe re n ce S id e -e ff e ct -f re e – c an n o t b e e n fo rc e d o n a ss e m b ly l e ve l (r e q u ir e s co m p il e r) . N o d at a h as t o b e r e p li ca te d . V al u e s h av e t o b e p as se d i n m e m o ry . 20 7 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 7 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) G en er ic S ta ck -F ra m e T h e c u rr e n t co d e p re p ar e d t o c al l a fu n ct io n : P u sh p ar am e te rs o n t h e s ta ck . W o rk s fo r an y d at a si ze ( u n le ss t h e s ta ck o ve rfl o w s) an d p ar am e te r p as si n g m o d e . p ag e 2 0 7 o f 4 8 7 (c h ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 7 f h f h (G lo b al ) va ri ab le s S B S P Pa ra m et er s © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 (G lo b al ) va ri ab le s S B S P Pa ra m et er s Ty p e s, s to ra g e s tr u ct u re s an d p as si n g m o d e s h av e t o b e a g re e d u p o n b e tw e e n c al le r an d c al le e . S o lv e d i f it ’s t h e s am e la n g u ag e , c o m p il e r an d p ro g ra m . I f th e l an g u ag e s o r th e c o m p il e rs a re d if fe re n t, t h e n s ta n d ar d s w il l b e r e q u ir e d . 20 5 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 5 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) G en er ic S ta ck -F ra m e Le t th e re b e s o m e ( g lo b al ) d at a o n t h e s ta ck . S ta ck -B as e ( S B ) is a s ta ti c ad d re ss , al w ay s p o in ti n g t o t h e … w e ll . S ta ck -P o in te r (S P ) p o in ts t o t h e c u rr e n t to p o f th e s ta ck . p ag e 2 0 5 o f 4 8 7 (c h ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 7 f h f h (G lo b al ) va ri ab le s S B S P © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 (G lo b al ) va ri ab le s S B S P G lo b al v ar ia b le s ca n a ls o b e s to re d s o m e p la ce e ls e . 21 0 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 1 0 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) G en er ic S ta ck -F ra m e T h e c al le r al so p ro vi d e s a re fe re n ce t o i ts o w n s ta ck f ra m e . T h is b u il d s a li n e ar c h ai n o f ca ll s th ro u g h t h e s ta ck . W il l b e u se d e .g . f o r d e b u g g in g ( st ac k t ra ce ) an d e xc e p ti o n p ro p ag at io n . p ag e 2 1 0 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 7 f h f h (G lo b al ) va ri ab le s S B S P Pa ra m et er s C o n te xt ( st at ic ) li n k P ri o r fr am e (d yn am ic ) li n k © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 (G lo b al ) va ri ab le s S B S P Pa ra m et er s C o n te xt ( st at ic ) li n k P ri o r fr am e (d yn am ic ) li n k T h e s ta ti c an d d yn am ic l in k m ig h t b e i d e n ti ca l in s o m e c as e s. 20 8 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 0 8 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) G en er ic S ta ck -F ra m e Fu n ct io n s (i n p ro g ra m m in g l an g u ag e s) h av e a c o n te xt . E .g . t h e s u rr o u n d in g f u n ct io n o r th e h o st in g o b je ct . T h e c al le r k n o w s th is c o n te xt a n d p ro vi d e s it . p ag e 2 0 8 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 7 f h f h (G lo b al ) va ri ab le s S B S P Pa ra m et er s C o n te xt ( st at ic ) li n k © 2 0 2 1 U w e R Z im m er Th e A u st ra li an N at io n al U n iv er si tyy © 2 0 2 1 (G lo b al ) va ri ab le s S B S P Pa ra m et er s C o n te xt ( st at ic ) li n k 21 1 Fu n ct io n s © 2 0 2 1 U w e R . Z im m er , T h e A u st ra li an N at io n al U n iv er si ty p ag e 2 1 1 o f 4 8 7 ( ch ap te r 3 : “F u n ct io n s” u p t o p ag e 2 3 2 ) St at ic v s. d yn am ic l in ks f u n c t i o n a ( x : I n t e g e r ) r e t u r n I n t e g e r i s f u n c t i o n b ( y : I n t e g e r ) r e t u r n I n t e g e r i s ( x + y ) ; f u n c t i o n c ( z : I n t e g e r ) r e t u r n I n t e g e r i s ( b ( z ) ) ; b e g i n r e t u r n c ( x ) ; e n d a ; a : : I n t e g e r - >
I
n
t
e
g
e
r
a
x
=
c
x
w
h
e
r
e
b
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
b
y
=
x
+
y
c
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
c
z
=
b
z
20
9
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
0
9
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
Fu
n
ct
io
n
s
(i
n
p
ro
g
ra
m
m
in
g
l
an
g
u
ag
e
s)
h
av
e
a
c
o
n
te
xt
.
E
.g
. t
h
e
s
u
rr
o
u
n
d
in
g
f
u
n
ct
io
n
o
r
th
e
h
o
st
in
g
o
b
je
ct
.
T
h
e
c
al
le
r
k
n
o
w
s
th
is
c
o
n
te
xt
a
n
d
p
ro
vi
d
e
s
it
.
p
ag
e
2
0
9
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
o
m
e
l
an
g
u
ag
e
s
w
il
l
n
o
t
h
av
e
a
c
o
n
te
xt
b
y
d
e
fa
u
lt
, l
ik
e
C
o
r
A
ss
e
m
b
ly
.
(g
n
u
C
e
xp
an
d
s
th
e
C
s
ta
n
d
ar
d
an
d
p
ro
vi
d
e
s
it
t
h
o
u
g
h
)
21
4
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
St
at
ic
v
s.
d
yn
am
ic
l
in
ks
f
u
n
c
t
i
o
n
a
(
x
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
f
u
n
c
t
i
o
n
b
(
y
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
x
+
y
)
;
f
u
n
c
t
i
o
n
c
(
z
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
b
(
z
)
)
;
b
e
g
i
n
r
e
t
u
r
n
c
(
x
)
;
e
n
d
a
;
a
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
a
x
=
c
x
w
h
e
r
e
b
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
b
y
=
x
+
y
c
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
c
z
=
b
z
D
yn
am
ic
l
in
k
(p
ri
o
r
fr
am
e
)
T
h
e
c
al
le
r
o
f
f
u
n
c
t
i
o
n
b
i
s
f
u
n
c
t
i
o
n
c
.
St
at
ic
l
in
k
(c
o
n
te
xt
)
T
h
e
c
o
n
te
xt
f
o
r
f
u
n
c
t
i
o
n
b
i
s
f
u
n
c
t
i
o
n
a
.
p
ag
e
2
1
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
7
p
ag
e
2
1
4
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
to
p
ag
e
2
3
2
)
7
H
e
n
ce
b
c
an
a
cc
e
ss
x
(
b
u
t
n
o
t
z
).
H
e
n
ce
e
xc
e
p
ti
o
n
s
ra
is
e
d
i
n
b
a
re
h
an
d
le
d
fi
r
st
i
n
b
, t
h
e
n
i
n
c
, a
n
d
t
h
e
n
a
.
T
h
e
d
yn
am
ic
a
n
d
s
ta
ti
c
li
n
k
fo
r
f
u
n
c
t
i
o
n
c
a
re
b
o
th
f
u
n
c
t
i
o
n
a
.
21
2
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
St
at
ic
v
s.
d
yn
am
ic
l
in
ks
f
u
n
c
t
i
o
n
a
(
x
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
f
u
n
c
t
i
o
n
b
(
y
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
x
+
y
)
;
f
u
n
c
t
i
o
n
c
(
z
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
b
(
z
)
)
;
b
e
g
i
n
r
e
t
u
r
n
c
(
x
)
;
e
n
d
a
;
a
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
a
x
=
c
x
w
h
e
r
e
b
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
b
y
=
x
+
y
c
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
c
z
=
b
z
T
h
e
d
yn
am
ic
a
n
d
s
ta
ti
c
li
n
k
fo
r
f
u
n
c
t
i
o
n
c
a
re
b
o
th
f
u
n
c
t
i
o
n
a
.
21
5
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
5
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
c
al
le
r
al
so
p
ro
vi
d
e
s
a
re
fe
re
n
ce
t
o
i
ts
o
w
n
s
ta
ck
f
ra
m
e
.
T
h
is
b
u
il
d
s
a
li
n
e
ar
c
h
ai
n
o
f
ca
ll
s
th
ro
u
g
h
t
h
e
s
ta
ck
.
W
il
l
b
e
u
se
d
e
.g
. f
o
r
d
e
b
u
g
g
in
g
(
st
ac
k
t
ra
ce
)
an
d
e
xc
e
p
ti
o
n
p
ro
p
ag
at
io
n
.
p
ag
e
2
1
5
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
21
3
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
3
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
St
at
ic
v
s.
d
yn
am
ic
l
in
ks
f
u
n
c
t
i
o
n
a
(
x
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
f
u
n
c
t
i
o
n
b
(
y
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
x
+
y
)
;
f
u
n
c
t
i
o
n
c
(
z
:
I
n
t
e
g
e
r
)
r
e
t
u
r
n
I
n
t
e
g
e
r
i
s
(
b
(
z
)
)
;
b
e
g
i
n
r
e
t
u
r
n
c
(
x
)
;
e
n
d
a
;
a
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
a
x
=
c
x
w
h
e
r
e
b
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
b
y
=
x
+
y
c
:
:
I
n
t
e
g
e
r
–
>
I
n
t
e
g
e
r
c
z
=
b
z
D
yn
am
ic
l
in
k
(p
ri
o
r
fr
am
e
)
T
h
e
c
al
le
r
o
f
f
u
n
c
t
i
o
n
b
i
s
f
u
n
c
t
i
o
n
c
.
H
e
n
ce
e
xc
e
p
ti
o
n
s
ra
is
e
d
i
n
b
a
re
h
an
d
le
d
fi
r
st
i
n
b
, t
h
e
n
i
n
c
, a
n
d
t
h
e
n
a
.
T
h
e
d
yn
am
ic
a
n
d
s
ta
ti
c
li
n
k
fo
r
f
u
n
c
t
i
o
n
c
a
re
b
o
th
f
u
n
c
t
i
o
n
a
.
21
8
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
A
F
ra
m
e
Po
in
te
r
(F
P
)
is
e
st
ab
li
sh
e
d
a
t
th
e
b
o
u
n
d
–
ar
y
b
e
tw
e
e
n
t
h
e
c
al
le
r
an
d
t
h
e
c
al
le
e
.
U
p
w
ar
d
s
fr
o
m
t
h
e
F
P
: d
at
a
fr
o
m
t
h
is
f
u
n
ct
io
n
.
D
o
w
n
w
ar
d
s
fr
o
m
t
h
e
F
P
:
d
at
a
p
ro
vi
d
e
d
b
y
th
e
p
re
vi
o
u
s
fu
n
ct
io
n
.
p
ag
e
2
1
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
S
P
Sa
ve
d
r
es
o
u
rc
es
F
P
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
av
e
d
r
e
so
u
rc
e
s
ar
e
f
o
r
in
st
an
ce
r
e
g
is
te
rs
w
h
ic
h
t
h
e
c
al
le
e
i
s
p
la
n
n
in
g
t
o
u
se
.
21
6
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
6
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
l
as
t
it
e
m
t
o
b
e
s
to
re
d
b
e
fo
re
h
an
d
in
g
o
ve
r
co
n
tr
o
l
is
t
h
e
a
d
d
re
ss
o
f
th
e
f
o
ll
o
w
in
g
i
n
st
ru
ct
io
n
.
T
h
e
c
o
n
tr
o
l
fl
o
w
c
an
l
at
e
r
re
tu
rn
t
o
t
h
is
a
d
d
re
ss
.
p
ag
e
2
1
6
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
21
9
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
9
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
Lo
ca
l
va
ri
ab
le
s
ar
e
a
ll
o
ca
te
d
(
b
y
m
o
vi
n
g
t
h
e
s
ta
ck
p
o
in
te
r)
.
Lo
ca
l
va
ri
ab
le
s
ca
n
b
e
o
f
an
y
si
ze
o
r
st
ru
ct
u
re
,
u
n
le
ss
t
h
e
s
ta
ck
o
ve
rfl
o
w
s.
T
h
e
c
o
m
p
le
te
s
a
n
e
w
s
ta
ck
f
ra
m
e.
p
ag
e
2
1
9
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
21
7
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
1
7
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
C
o
n
tr
o
l
is
h
an
d
e
d
o
ve
r
to
t
h
e
c
al
le
e
.
T
h
e
I
n
st
ru
ct
io
n
P
o
in
te
r
(I
P
),
s
o
m
e
ti
m
e
s
al
so
c
al
le
d
P
ro
g
ra
m
C
o
u
n
te
r
(P
C
)
is
c
h
an
g
e
d
t
o
a
n
e
w
a
d
d
re
ss
.
O
p
e
ra
ti
o
n
s
fr
o
m
h
e
re
a
re
i
n
t
h
e
c
o
n
tr
o
l
o
f
th
e
c
al
le
e
.
p
ag
e
2
1
7
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
22
2
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
n
e
xt
f
u
n
ct
io
n
c
al
l
w
il
l
p
ro
d
u
ce
t
h
e
n
e
xt
s
ta
ck
f
ra
m
e
.
V
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
f
ro
m
t
h
e
c
o
n
te
xt
s
ta
y
vi
si
b
le
(v
ia
t
h
e
c
h
ai
n
o
f
st
at
ic
l
in
k
s)
.
p
ag
e
2
2
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSa
vvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
rc
esce
s
ce
s
C
al
le
r
C
al
le
e
Lo
ca
l
va
ri
ab
le
s
ca
n
o
n
ly
b
e
a
d
d
e
d
t
o
t
h
e
c
u
rr
e
n
tl
y
e
xe
cu
ti
n
g
f
u
n
ct
io
n
.
22
0
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
0
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
Lo
ca
l
va
ri
ab
le
s
ar
e
a
ll
o
ca
te
d
(
b
y
m
o
vi
n
g
t
h
e
s
ta
ck
p
o
in
te
r)
.
Lo
ca
l
va
ri
ab
le
s
ca
n
b
e
o
f
an
y
si
ze
o
r
st
ru
ct
u
re
,
u
n
le
ss
t
h
e
s
ta
ck
o
ve
rfl
o
w
s.
T
h
e
c
o
m
p
le
te
s
a
n
e
w
s
ta
ck
f
ra
m
e.
p
ag
e
2
2
0
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
W
h
il
e
t
h
is
f
u
n
ct
io
n
i
s
e
xe
cu
ti
n
g
, l
o
ca
l
va
ri
ab
le
s
ca
n
s
ti
ll
b
e
a
d
d
e
d
.
H
an
d
y,
i
f
e
.g
. t
h
e
s
iz
e
o
f
a
lo
ca
l
va
ri
ab
le
i
s
n
o
t
ye
t
d
e
te
rm
in
e
d
w
h
e
n
t
h
e
f
u
n
ct
io
n
s
ta
rt
s.
22
3
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
3
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
n
e
xt
f
u
n
ct
io
n
c
al
l
w
il
l
p
ro
d
u
ce
t
h
e
n
e
xt
s
ta
ck
f
ra
m
e
.
N
o
te
w
h
ic
h
v
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
a
re
v
is
ib
le
.
p
ag
e
2
2
3
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
22
1
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
1
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
n
e
xt
f
u
n
ct
io
n
c
al
l
w
il
l
p
ro
d
u
ce
t
h
e
n
e
xt
s
ta
ck
f
ra
m
e
.
V
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
f
ro
m
t
h
e
c
o
n
te
xt
s
ta
y
vi
si
b
le
(v
ia
t
h
e
c
h
ai
n
o
f
st
at
ic
l
in
k
s)
.
p
ag
e
2
2
1
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSa
vvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
rc
esce
s
ce
s
C
al
le
r
C
al
le
e
22
6
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
6
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
C
al
le
r
P
r
e
_
C
a
l
l
:
…
;
A
l
l
o
c
a
t
e
/
i
d
e
n
t
i
f
y
s
p
a
c
e
f
o
r
t
h
e
p
a
r
a
m
e
t
e
r
s
…
;
C
o
p
y
t
h
e
i
n
a
n
d
i
n
–
o
u
t
…
;
p
a
r
a
m
e
t
e
r
s
t
o
t
h
i
s
s
p
a
c
e
…
;
P
o
t
e
n
t
i
a
l
l
y
p
r
o
v
i
d
e
l
i
n
k
s
…
;
P
r
o
v
i
d
e
a
r
e
t
u
r
n
a
d
d
r
e
s
s
(
“
P
o
s
t
_
C
a
l
l
”
)
…
;
(
u
s
u
a
l
l
y
i
m
p
l
i
c
i
t
w
i
t
h
t
h
e
c
a
l
l
i
t
s
e
l
f
)
C
al
l
th
e
f
u
n
ct
io
n
P
o
s
t
_
C
a
l
l
:
…
;
C
o
p
y
t
h
e
o
u
t
a
n
d
i
n
–
o
u
t
p
a
r
a
m
e
t
e
r
s
…
;
t
o
l
o
c
a
l
v
a
r
i
a
b
l
e
s
o
r
r
e
g
i
s
t
e
r
s
…
;
P
o
t
e
n
t
i
a
l
l
y
r
e
s
t
o
r
e
t
h
e
f
r
a
m
e
p
o
i
n
t
e
r
…
;
R
e
s
t
o
r
e
t
h
e
s
t
a
c
k
t
o
i
t
s
p
r
e
v
i
o
u
s
s
t
a
t
e
…
;
(
i
f
t
h
e
s
t
a
c
k
h
a
s
b
e
e
n
u
s
e
d
)
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
22
4
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
T
h
e
n
e
xt
f
u
n
ct
io
n
c
al
l
w
il
l
p
ro
d
u
ce
t
h
e
n
e
xt
s
ta
ck
f
ra
m
e
.
N
o
te
w
h
ic
h
v
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
a
re
v
is
ib
le
.
p
ag
e
2
2
4
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
A
cc
e
ss
in
g
t
h
e
c
o
n
te
xt
l
ik
e
th
at
c
an
b
e
i
n
e
ffi
c
ie
n
t!
C
o
m
p
il
e
rs
m
ay
c
h
o
se
o
th
e
r
m
e
ch
an
is
m
(
e
.g
. d
is
p
la
ys
,
w
h
ic
h
m
ak
e
a
ll
c
o
n
te
xt
le
ve
ls
a
cc
e
ss
ib
le
a
t
o
n
ce
).
22
7
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
7
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
C
al
le
e
P
r
o
l
o
g
u
e
:
…
;
S
a
v
e
a
l
l
r
e
g
i
s
t
e
r
s
w
h
i
c
h
a
r
e
n
e
e
d
e
d
…
;
i
n
s
i
d
e
t
h
i
s
f
u
n
c
t
i
o
n
t
o
t
h
e
s
t
a
c
k
…
;
E
s
t
a
b
l
i
s
h
a
n
e
w
f
r
a
m
e
p
o
i
n
t
e
r
…
;
w
h
i
l
e
p
o
t
e
n
t
i
a
l
l
y
s
a
v
i
n
g
t
h
e
p
r
e
v
i
o
u
s
f
p
…
;
A
l
l
o
c
a
t
e
/
i
d
e
n
t
i
f
y
s
p
a
c
e
f
o
r
l
o
c
a
l
v
a
r
i
a
b
l
e
s
…
;
P
o
t
e
n
t
i
a
l
l
y
i
n
i
t
i
a
l
i
z
e
l
o
c
a
l
v
a
r
i
a
b
l
e
s
O
p
e
ra
ti
o
n
s,
w
h
ic
h
w
il
l
u
se
lo
ca
l
an
d
c
o
n
te
xt
v
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
(v
ia
t
h
e
F
P
(s
))
E
p
i
l
o
g
u
e
:
…
;
P
o
t
e
n
t
i
a
l
l
y
r
e
s
t
o
r
e
t
h
e
p
r
i
o
r
f
r
a
m
e
p
o
i
n
t
e
r
…
;
R
e
s
t
o
r
e
t
h
e
s
t
a
c
k
t
o
i
t
s
s
t
a
t
e
a
t
e
n
t
r
y
R
e
tu
rn
f
ro
m
f
u
n
ct
io
n
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
22
5
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
5
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
p
ag
e
2
2
5
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
7
f
h
f
h
(G
lo
b
al
)
va
ri
ab
le
s
S
B
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
F
P
S
P
Lo
ca
l
va
ri
ab
le
s
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
H
o
w
f
as
t
/
co
m
p
le
x
is
t
h
e
al
lo
ca
ti
o
n
a
n
d
d
ea
ll
o
ca
ti
o
n
o
f
lo
ca
l v
ar
ia
b
le
s
an
d
p
ar
am
e
te
rs
o
n
t
h
e
s
ta
ck
?
23
0
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
3
0
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
H
ea
p
B
y
u
si
n
g
a
n
o
u
t,
b
y-
re
fe
re
n
ce
p
ar
am
e
te
r,
th
e
l
in
k
t
o
t
h
e
n
e
w
ly
a
ll
o
ca
te
d
m
e
m
o
ry
a
re
a
is
k
e
p
t.
…
a
n
d
a
l
o
ca
l
va
ri
ab
le
i
n
t
h
e
c
al
li
n
g
fu
n
ct
io
n
c
an
k
e
e
p
t
h
is
l
in
k
.
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSa
vvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
rc
esce
s
ce
s
H
e
a
p
m
e
m
o
r
y
H
o
w
t
o
k
e
e
p
a
n
y
m
e
m
o
ry
al
lo
ca
ti
o
n
a
ft
e
r
fu
n
ct
io
n
r
e
tu
rn
?
22
8
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
8
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
H
ea
p
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
C
al
le
r
C
al
le
e
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
H
o
w
t
o
k
e
e
p
a
n
y
m
e
m
o
ry
al
lo
ca
ti
o
n
a
ft
e
r
fu
n
ct
io
n
r
e
tu
rn
?
23
1
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
3
1
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
H
ea
p
B
y
u
si
n
g
a
n
o
u
t,
b
y-
re
fe
re
n
ce
p
ar
am
e
te
r,
th
e
l
in
k
t
o
t
h
e
n
e
w
ly
a
ll
o
ca
te
d
m
e
m
o
ry
a
re
a
is
k
e
p
t.
…
a
n
d
a
l
o
ca
l
va
ri
ab
le
i
n
t
h
e
c
al
li
n
g
fu
n
ct
io
n
c
an
k
e
e
p
t
h
is
l
in
k
.
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
S
B
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Sa
ve
d
r
es
o
u
rc
es
F
P
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSa
vvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
rc
esce
s
ce
s
H
e
a
p
m
e
m
o
r
y
H
o
w
t
o
k
e
e
p
a
n
y
m
e
m
o
ry
al
lo
ca
ti
o
n
a
ft
e
r
fu
n
ct
io
n
r
e
tu
rn
?
p
ag
p
ag
e
2
3
1
o
f
4
8
7
(c
h
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
7
W
h
e
n
t
o
d
e
al
lo
ca
te
t
h
o
u
g
h
?
•
G
ar
b
ag
e
c
o
ll
e
ct
io
n
(
Ja
va
)?
•
S
m
ar
t
p
o
in
te
rs
(
C
+
+
)?
•
R
e
fe
re
n
ce
o
w
n
e
rs
h
ip
s
(R
u
st
)?
•
S
co
p
e
d
p
o
in
te
rs
/
s
to
ra
g
e
p
o
o
ls
(
A
d
a)
?
22
9
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
2
9
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
G
en
er
ic
S
ta
ck
-F
ra
m
e
–
H
ea
p
B
y
u
si
n
g
a
n
o
u
t,
b
y-
re
fe
re
n
ce
p
ar
am
e
te
r,
th
e
l
in
k
t
o
t
h
e
n
e
w
ly
a
ll
o
ca
te
d
m
e
m
o
ry
a
re
a
is
k
e
p
t.
©
2
0
2
1
U
w
e
R
Z
im
m
er
Th
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
tyy
©
2
0
2
1
(G
lo
b
al
)
va
ri
ab
le
s
Pa
ra
m
et
er
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
F
P
S
P
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Pa
ra
m
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
va
ri
ab
le
s
Sa
ve
d
r
es
o
u
rc
es
Sa
ve
d
r
es
o
u
rc
es
Pa
r
PP
am
et
er
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
Lo
ca
l
v
Lo
ca
l
v
Lo
ca
l
va
ri
ab
le
s
ar
ia
b
le
s
ar
ia
b
le
s
P
ri
o
r
fr
am
e
(d
yn
am
ic
)
li
n
k
R
et
u
rn
a
d
d
re
ss
SaSaSaSa
vvvve
d
re
so
u
r
ed
r
es
o
u
r
ed
re
so
u
r
ed
re
so
u
rc
esce
s
ce
s
ce
s
C
o
n
te
xt
(
st
at
ic
)
li
n
k
S
B
H
e
a
p
m
e
m
o
r
y
H
o
w
t
o
k
e
e
p
a
n
y
m
e
m
o
ry
al
lo
ca
ti
o
n
a
ft
e
r
fu
n
ct
io
n
r
e
tu
rn
?
23
2
Fu
n
ct
io
n
s
©
2
0
2
1
U
w
e
R
.
Z
im
m
er
, T
h
e
A
u
st
ra
li
an
N
at
io
n
al
U
n
iv
er
si
ty
p
ag
e
2
3
2
o
f
4
8
7
(
ch
ap
te
r
3
:
“F
u
n
ct
io
n
s”
u
p
t
o
p
ag
e
2
3
2
)
Fu
n
ct
io
n
s
•
Fr
am
ew
o
rk
•
R
e
tu
rn
a
d
d
re
ss
•
R
e
la
ti
ve
a
d
d
re
ss
in
g
•
Pa
ra
m
et
er
p
as
si
n
g
m
o
d
es
a
n
d
m
ec
h
an
is
m
s
•
C
o
p
y
ve
rs
u
s
re
fe
re
n
ce
•
In
fo
rm
at
io
n
fl
o
w
d
ir
e
ct
io
n
s
•
La
te
e
va
lu
at
io
n
•
St
ac
kf
ra
m
es
•
S
ta
ti
c
an
d
d
yn
am
ic
l
in
k
s
•
Pa
ra
m
e
te
rs
•
Lo
ca
l
va
ri
ab
le
s
Su
m
m
ar
y