func callforward{ a b c } x = 123; return callback{ 1 (a * b) (x - c)}; end; .globl callforward .ent callforward callforward: .eflag 48 .frame $30, 0, $26, 0 .prologue 0 ldgp $29, 0($27) subq $30, 24, $30 stq $9, 0($30) mov $16, $9 stq $10, 8($30) mov $17, $10 stq $11, 16($30) mov $18, $11 mov 123, $2 subq $30, 16, $30 stq $1, 16($30) stq $2, 8($30) /* param calc start */ mov 1, $16 mulq $9, $10, $17 subq $2, $11, $18 jsr $26, callback ldgp $29, 0($26) ldq $2, 8($30) ldq $1, 16($30) addq $30, 16 jmp func__50__end func__50__end: ldq $9, 0($30) ldq $10, 8($30) ldq $11, 16($30) addq $30, 24, $30 /*1 registers used in statements, 1 local vars*/ .end callforward long callback(long a, long b, long c) { if(a==1)ok++; else { printf("Error in callforward. a = %d\n", a); exit(1); } if(b == c_b * c_a) ok++; else { printf("error in callforward. b = %ld, expected %ld\n", b, c_b$ exit(1); } if(c == 123-c_c) ok++; else { printf("error in callforward. c = %d, expected %d\n", c, 123-c_$ exit(1); } return 12345; }