Mercurial > repos > rhope
comparison runtime/integer.c @ 12:31f8182f3433
Finished fib test and did some small work on the c backend
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 25 May 2009 23:34:36 -0400 |
parents | 3021dac0d8f5 |
children | ea991f95ae1f |
comparison
equal
deleted
inserted
replaced
11:3021dac0d8f5 | 12:31f8182f3433 |
---|---|
1 #include "integer.h" | 1 #include "integer.h" |
2 #include "builtin.h" | 2 #include "builtin.h" |
3 #include "context.h" | 3 #include "context.h" |
4 #include "bool.h" | |
4 | 5 |
5 #define left ((_t_Int32 *)cdata->params[0]) | 6 #define left ((t_Int32 *)cdata->params[0]) |
6 #define right ((_t_Int32 *)cdata->params[1]) | 7 #define right ((t_Int32 *)cdata->params[1]) |
7 | 8 |
8 MethodNoLocals(_PL_,Int32, | 9 MethodNoLocals(_PL_,Int32, |
9 NumParams 2, | 10 NumParams 2, |
10 CallSpace 1) | 11 CallSpace 1) |
11 | 12 |
12 CopiedParam(0, left, Int32, TYPE_INT32) | 13 CopiedParam(0, TYPE_INT32) |
13 Param(1, right, Int32, TYPE_INT32) | 14 Param(1, TYPE_INT32) |
14 | 15 |
15 left->num += right->num; | 16 left->num += right->num; |
16 | 17 |
17 release_ref((object *)right); | 18 release_ref((object *)right); |
18 EndFunc | 19 EndFunc |
19 | 20 |
20 MethodNoLocals(_MN_,Int32, | 21 MethodNoLocals(_MN_,Int32, |
21 NumParams 2, | 22 NumParams 2, |
22 CallSpace 1) | 23 CallSpace 1) |
23 | 24 |
24 CopiedParam(0, left, Int32, TYPE_INT32) | 25 CopiedParam(0, TYPE_INT32) |
25 Param(1, right, Int32, TYPE_INT32) | 26 Param(1, TYPE_INT32) |
26 | 27 |
27 left->num -= right->num; | 28 left->num -= right->num; |
28 | 29 |
29 release_ref((object *)right); | 30 release_ref((object *)right); |
30 EndFunc | 31 EndFunc |
31 | 32 |
33 MethodNoLocals(_LT_,Int32, | |
34 NumParams 2, | |
35 CallSpace 1) | |
36 | |
37 Param(0, TYPE_INT32) | |
38 Param(1, TYPE_INT32) | |
39 | |
40 if(left->num < right->num) | |
41 { | |
42 release_ref(cdata->params[0]); | |
43 Ret(0, Yes) | |
44 } else { | |
45 release_ref(cdata->params[0]); | |
46 Ret(0, No) | |
47 } | |
48 release_ref(cdata->params[0]); | |
49 EndFunc | |
50 | |
51 MethodNoLocals(_GT_,Int32, | |
52 NumParams 2, | |
53 CallSpace 1) | |
54 | |
55 Param(0, TYPE_INT32) | |
56 Param(1, TYPE_INT32) | |
57 | |
58 if(left->num > right->num) | |
59 { | |
60 release_ref(cdata->params[0]); | |
61 Ret(0, Yes) | |
62 } else { | |
63 release_ref(cdata->params[0]); | |
64 Ret(0, No) | |
65 } | |
66 release_ref(cdata->params[0]); | |
67 EndFunc | |
68 | |
32 object * make_Int32(int32_t val) | 69 object * make_Int32(int32_t val) |
33 { | 70 { |
34 _t_Int32 * obj; | 71 t_Int32 * obj; |
35 object * ret = new_object(TYPE_INT32); | 72 object * ret = new_object(TYPE_INT32); |
36 obj = (_t_Int32 *)ret; | 73 obj = (t_Int32 *)ret; |
37 obj->num = val; | 74 obj->num = val; |
38 return ret; | 75 return ret; |
39 } | 76 } |