|
1 | 1 | #include "br.h" |
2 | 2 |
|
3 | | -BRUTER_FUNCTION(_bit_and) |
| 3 | +BR_FUNCTION(_bit_and) |
4 | 4 | { |
5 | | - BR_ARG(0).i &= BR_ARG(1).i; |
| 5 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i & br_arg(context, args, 1).i)); |
6 | 6 | return -1; |
7 | 7 | } |
8 | 8 |
|
9 | | -BRUTER_FUNCTION(_bit_or) |
| 9 | +BR_FUNCTION(_bit_or) |
10 | 10 | { |
11 | | - BR_ARG(0).i |= BR_ARG(1).i; |
| 11 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i | br_arg(context, args, 1).i)); |
12 | 12 | return -1; |
13 | 13 | } |
14 | 14 |
|
15 | | -BRUTER_FUNCTION(_bit_xor) |
| 15 | +BR_FUNCTION(_bit_xor) |
16 | 16 | { |
17 | | - BR_ARG(0).i ^= BR_ARG(1).i; |
| 17 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i ^ br_arg(context, args, 1).i)); |
18 | 18 | return -1; |
19 | 19 | } |
20 | 20 |
|
21 | | -BRUTER_FUNCTION(_bit_not) |
| 21 | +BR_FUNCTION(_bit_not) |
22 | 22 | { |
23 | | - BR_ARG(0).i = ~BR_ARG(0).i; |
| 23 | + br_arg_set(context, args, 0, bruter_value_i(~br_arg(context, args, 0).i)); |
24 | 24 | return -1; |
25 | 25 | } |
26 | 26 |
|
27 | | -BRUTER_FUNCTION(_bit_lshift) |
| 27 | +BR_FUNCTION(_bit_lshift) |
28 | 28 | { |
29 | | - BR_ARG(0).i <<= BR_ARG(1).i; |
| 29 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i << br_arg(context, args, 1).i)); |
30 | 30 | return -1; |
31 | 31 | } |
32 | 32 |
|
33 | | -BRUTER_FUNCTION(_bit_rshift) |
| 33 | +BR_FUNCTION(_bit_rshift) |
34 | 34 | { |
35 | | - BR_ARG(0).i >>= BR_ARG(1).i; |
| 35 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i >> br_arg(context, args, 1).i)); |
36 | 36 | return -1; |
37 | 37 | } |
38 | 38 |
|
39 | | -BRUTER_FUNCTION(_bit_on) |
| 39 | +BR_FUNCTION(_bit_on) |
40 | 40 | { |
41 | | - BruterInt mask = 1 << BR_ARG(1).i; |
42 | | - BR_ARG(0).i |= mask; |
| 41 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 42 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i | mask)); |
43 | 43 | return -1; |
44 | 44 | } |
45 | 45 |
|
46 | | -BRUTER_FUNCTION(_bit_off) |
| 46 | +BR_FUNCTION(_bit_off) |
47 | 47 | { |
48 | | - BruterInt mask = ~(1 << BR_ARG(1).i); |
49 | | - BR_ARG(0).i &= mask; |
| 48 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 49 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i & ~mask)); |
50 | 50 | return -1; |
51 | 51 | } |
52 | 52 |
|
53 | | -BRUTER_FUNCTION(_bit_set) // set 0 or 1 |
| 53 | +BR_FUNCTION(_bit_set) // set 0 or 1 |
54 | 54 | { |
55 | | - BruterInt mask = 1 << BR_ARG(1).i; |
56 | | - if (BR_ARG(2).i) |
57 | | - BR_ARG(0).i |= mask; |
| 55 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 56 | + if (br_arg(context, args, 2).i) |
| 57 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i | mask)); |
58 | 58 | else |
59 | | - BR_ARG(0).i &= ~mask; |
| 59 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i & ~mask)); |
60 | 60 | return -1; |
61 | 61 | } |
62 | 62 |
|
63 | | - |
64 | | -BRUTER_FUNCTION(_bit_get) |
| 63 | +BR_FUNCTION(_bit_get) |
65 | 64 | { |
66 | | - BruterInt mask = 1 << BR_ARG(1).i; |
67 | | - return (BR_ARG(0).i & mask) != 0; |
| 65 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 66 | + return (br_arg(context, args, 0).i & mask) ? 1 : 0; |
68 | 67 | } |
69 | 68 |
|
70 | | -BRUTER_FUNCTION(_bit_switch) |
| 69 | +BR_FUNCTION(_bit_switch) |
71 | 70 | { |
72 | | - BruterInt mask = 1 << BR_ARG(1).i; |
73 | | - BR_ARG(0).i ^= mask; |
| 71 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 72 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i ^ mask)); |
74 | 73 | return -1; |
75 | 74 | } |
76 | 75 |
|
77 | | -BRUTER_FUNCTION(_bit_swap) |
| 76 | +BR_FUNCTION(_bit_swap) |
78 | 77 | { |
79 | | - BruterInt mask = 1 << BR_ARG(1).i; |
80 | | - BruterInt mask2 = 1 << BR_ARG(2).i; |
81 | | - BruterInt temp = (BR_ARG(0).i & mask) >> BR_ARG(1).i; |
82 | | - BR_ARG(0).i &= ~mask; |
83 | | - BR_ARG(0).i |= (temp << BR_ARG(2).i); |
| 78 | + BruterInt mask = 1 << br_arg(context, args, 1).i; |
| 79 | + BruterInt mask2 = 1 << br_arg(context, args, 2).i; |
| 80 | + BruterInt temp = (br_arg(context, args, 0).i & mask) >> br_arg(context, args, 1).i; |
| 81 | + temp ^= (br_arg(context, args, 0).i & mask2) >> br_arg(context, args, 2).i; |
| 82 | + temp &= 1; // ensure it's only 0 or 1 |
| 83 | + br_arg_set(context, args, 0, bruter_value_i(br_arg(context, args, 0).i & ~(mask | mask2))); |
84 | 84 | return -1; |
85 | 85 | } |
86 | 86 |
|
|
0 commit comments