Mercurial > hg > CbC > CbC_gcc
annotate CbC-examples/fact-rectype.c @ 90:99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 25 Dec 2011 04:04:42 +0900 |
parents | |
children |
rev | line source |
---|---|
90
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #include <stdio.h> |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 #define __environment _CbC_environment |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 #define __return _CbC_return |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 __code factorial(int n, int result, __rectype *print, __rectype *exit1, void *envp) |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 { |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 if(n<0) { |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 print("#0008:err %dn",n); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 goto (*exit1)(0, envp); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 } |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 if (n==0) |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 goto (*print)(n,result,print,exit1, envp); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 else { |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 result *= n; |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 n--; |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 goto factorial(n, result, print,exit1, envp); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 } |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 } |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 __code print(int n, int result, __rectype *print ,__rectype *exit1 ,void *envp); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 int main(int argc, char *argv[]) { |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 int n; |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 n = 10; |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 goto factorial(n,1,print,__return,__environment); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 } |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 __code print(int n, int result, __rectype *print ,__rectype *exit1,void *envp){ |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 printf("#0032:%d = %d\n", n, result); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 goto (*exit1)(0,envp); |
99e7b6776dd1
implemeted __rectype expression. add CbC-exanples/fact-rectype.s
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 } |