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 }