CS计算机代考程序代写 ER AI COPE-03 Functions.indd

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