First a word from ...
Review caller vs callee saved registers.
Example 1
int square(int n) {
int r = 0 ;
if (n != 0) {
r = square(n-1) + n + n - 1 ;
}
return r ;
}
- Handout example
- Stack frame for “obvious” solution
nin8($sp)and$rain4($sp)
Example 2
extern int twoD[5][5] ;
void diagonalCopy(int oneD[], int i) {
twoD[i][i] = oneD[i] ;
}
- global vs local
- Computing the offset one dimension at a time
- Solving the forumla for
i
Example 3
/* normal */
int positiveAdditude(int V[], int n) {
int sum = 0 ;
for (int i=0; i<n; ++i) {
if (V[i] > 0) {
sum = sum + V[i] ;
}
}
return sum;
}
Example 4
/* pointer */
int positiveAdditude(int V[], int n) {
int *Vstart = &V[0] ;
int *Vend = &V[n] ;
int sum = 0 ;
for (int *p=Vstart; p<Vend; ++p) {
if (*p > 0) {
sum = sum + *p ;
}
}
return sum;
}