80 |
|
|
81 |
/* operations with flags */ |
/* operations with flags */ |
82 |
|
|
83 |
void OPPROTO op_addl_T0_T1_cc(void) |
/* update flags with T0 and T1 (add/sub case) */ |
84 |
|
void OPPROTO op_update2_cc(void) |
85 |
{ |
{ |
86 |
CC_SRC = T0; |
CC_SRC = T1; |
|
T0 += T1; |
|
87 |
CC_DST = T0; |
CC_DST = T0; |
88 |
} |
} |
89 |
|
|
90 |
void OPPROTO op_orl_T0_T1_cc(void) |
/* update flags with T0 (logic operation case) */ |
91 |
|
void OPPROTO op_update1_cc(void) |
92 |
{ |
{ |
|
T0 |= T1; |
|
93 |
CC_DST = T0; |
CC_DST = T0; |
94 |
} |
} |
95 |
|
|
96 |
void OPPROTO op_andl_T0_T1_cc(void) |
void OPPROTO op_update_neg_cc(void) |
97 |
{ |
{ |
98 |
T0 &= T1; |
CC_SRC = -T0; |
|
CC_DST = T0; |
|
|
} |
|
|
|
|
|
void OPPROTO op_subl_T0_T1_cc(void) |
|
|
{ |
|
|
CC_SRC = T0; |
|
|
T0 -= T1; |
|
|
CC_DST = T0; |
|
|
} |
|
|
|
|
|
void OPPROTO op_xorl_T0_T1_cc(void) |
|
|
{ |
|
|
T0 ^= T1; |
|
99 |
CC_DST = T0; |
CC_DST = T0; |
100 |
} |
} |
101 |
|
|
102 |
void OPPROTO op_cmpl_T0_T1_cc(void) |
void OPPROTO op_cmpl_T0_T1_cc(void) |
103 |
{ |
{ |
104 |
CC_SRC = T0; |
CC_SRC = T1; |
105 |
CC_DST = T0 - T1; |
CC_DST = T0 - T1; |
106 |
} |
} |
107 |
|
|
108 |
void OPPROTO op_negl_T0_cc(void) |
void OPPROTO op_update_inc_cc(void) |
|
{ |
|
|
CC_SRC = 0; |
|
|
T0 = -T0; |
|
|
CC_DST = T0; |
|
|
} |
|
|
|
|
|
void OPPROTO op_incl_T0_cc(void) |
|
|
{ |
|
|
CC_SRC = cc_table[CC_OP].compute_c(); |
|
|
T0++; |
|
|
CC_DST = T0; |
|
|
} |
|
|
|
|
|
void OPPROTO op_decl_T0_cc(void) |
|
109 |
{ |
{ |
110 |
CC_SRC = cc_table[CC_OP].compute_c(); |
CC_SRC = cc_table[CC_OP].compute_c(); |
|
T0--; |
|
111 |
CC_DST = T0; |
CC_DST = T0; |
112 |
} |
} |
113 |
|
|