s: ld [fp+12] -> %r0 mov #12 -> %r1 add %r0, %r1 -> %r0 ld [r0] -> %r0 ld [r0] -> %r0 ret .globl retval /main() /{ / int i[5], *ip[5], j; / / for (j = 0; j < 5; j++) { / i[j] = 11+j; / ip[j] = i+j; / } / retval = s(ip); /} main: push #44 / i = fp-40, ip = fp-20, j = [fp] st %r2 -> [sp]-- st %g0 -> [fp] b ftest ftop: ld [fp] -> %r0 add %r0, %g1 -> %r0 st %r0 -> [fp] ftest: ld [fp] -> %r0 mov #5 -> %r1 cmp %r0, %r1 bge fend ld [fp] -> %r0 mov #11 -> %r1 add %r0, %r1 -> %r0 ld [fp] -> %r1 mov #4 -> %r2 mul %r1, %r2 -> %r1 mov #40 -> %r2 sub %r1, %r2 -> %r1 add %fp, %r1 -> %r1 st %r0 -> [r1] ld [fp] -> %r0 mov #4 -> %r1 mul %r0, %r1 -> %r0 mov #40 -> %r1 sub %r0, %r1 -> %r0 add %fp, %r0 -> %r0 ld [fp] -> %r1 mov #4 -> %r2 mul %r1, %r2 -> %r1 mov #20 -> %r2 sub %r1, %r2 -> %r1 add %fp, %r1 -> %r1 st %r0 -> [r1] b ftop fend: mov #20 -> %r0 sub %fp, %r0 -> %r0 st %r0 -> [sp]-- jsr s pop #4 st %r0 -> retval ld ++[sp] -> %r2 ret