func callback {p1} l1 = 555; l2 = 444; p1[0] = l3; return 0; end; func asmentry {p1 p2 p3} write0{}; l1 = write0{}; printvalue{}; p2[0] = write0{}; p2[getnull{}] = 333; return 0; end; func asmmiddle {} l1 = 1; l2 = 2; l3 = 3; l4 = 4; l5 = 5; l6 = 6; l7 = 7; l8 = 8; l9 = 9; l10 = 10; return 0; end; func asmasm {p1 p2 p3} l1 = p1; l2 = p2; l3 = p3; asmmiddle{}; return l1 + l2 + l3; end; func asmc2 {} printnum{1}; return 0; end; func asmc {p1 p2 p3 p4} l1 = cadd{p1 p2}; l1 = cadd{l1 p3}; printnum{l1}; return p4; end; func calltest {p1} return cadd{((p1+5)*7) ((p1*3)+2)}; end; func calltest2 {p1} return cadd{(calltest{p1}+3) 10}; end; func rectest {p1 p2} loop: printnum{p1}; if not (p1 < p2) goto exit; p1 = rectest{(p1+1)}; exit: return p1; end; ------------------------------------------------------------------------------------------------------ extern long asmentry (long, long); extern long callback (long); extern long asmasm (long, long, long); extern long asmc (long, long, long, long); extern long asmc2 (); extern long calltest (long); extern long calltest2 (long); extern long rectest (long, long); long getnull () { return 0; } long write0 () { printf("hallo\n"); return 567; } long write1 (long _num) { printf("%d\n", _num); return 1; } long printvalue () { long val = 0; callback(&val); printf("printvalue: %d\n", val); return 3478; } long cadd (long _c1, long _c2) { return _c1+_c2; } long printnum (long _c) { printf("printnum: %d\n", _c); return 0; } int main (int _argc, char* _argv) { long l = 0; asmentry(5, &l); printf("l=%d\n", l); asmc2(); printf("asmasm(100, 200, 300)=%d\n", asmasm(100, 200, 300)); printf("asmc(11, 34, 56, 25)=%d\n", asmc(11, 34, 56, 25)); printf("calltest(11)=%d [147]\n", calltest(11)); printf("calltest2(11)=%d [160]\n\n", calltest2(11)); printf("rectest(0, 10)=%d\n", rectest(0, 10)); return 0; }