Loading lib_com/basop32.c +7 −0 Original line number Diff line number Diff line Loading @@ -2044,6 +2044,8 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) Word32 L_test; Flag carry_int = 0; /* TODO: unset overflow, but not done */ /* unset_overflow( Overflow ); */ if ( get_carry( Carry ) ) { unset_carry( Carry ); Loading @@ -2056,6 +2058,7 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) L_var_out = L_var1 - L_var2; if ( L_var1 > 0L ) { set_overflow( Overflow ); unset_carry( Carry ); } } Loading @@ -2067,18 +2070,22 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) ) { set_overflow( Overflow ); carry_int = 0; } else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) ) { set_overflow( Overflow ); carry_int = 1; } else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) ) { unset_overflow( Overflow ); carry_int = 1; } if ( L_test == MIN_32 ) { set_overflow( Overflow ); carry_int ? set_carry( Carry ) : unset_carry( Carry ); } else Loading Loading
lib_com/basop32.c +7 −0 Original line number Diff line number Diff line Loading @@ -2044,6 +2044,8 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) Word32 L_test; Flag carry_int = 0; /* TODO: unset overflow, but not done */ /* unset_overflow( Overflow ); */ if ( get_carry( Carry ) ) { unset_carry( Carry ); Loading @@ -2056,6 +2058,7 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) L_var_out = L_var1 - L_var2; if ( L_var1 > 0L ) { set_overflow( Overflow ); unset_carry( Carry ); } } Loading @@ -2067,18 +2070,22 @@ Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow ) if ( ( L_test < 0 ) && ( L_var1 > 0 ) && ( L_var2 < 0 ) ) { set_overflow( Overflow ); carry_int = 0; } else if ( ( L_test > 0 ) && ( L_var1 < 0 ) && ( L_var2 > 0 ) ) { set_overflow( Overflow ); carry_int = 1; } else if ( ( L_test > 0 ) && ( ( L_var1 ^ L_var2 ) > 0 ) ) { unset_overflow( Overflow ); carry_int = 1; } if ( L_test == MIN_32 ) { set_overflow( Overflow ); carry_int ? set_carry( Carry ) : unset_carry( Carry ); } else Loading