diff --git a/TestSuite/overloads6.pas b/TestSuite/overloads6.pas new file mode 100644 index 000000000..f268d8b9b --- /dev/null +++ b/TestSuite/overloads6.pas @@ -0,0 +1,47 @@ +var s: string; + +procedure p(x: longword); +begin + s := 'longword'; +end; + +procedure p(x: integer); +begin + s := 'integer'; +end; + +procedure p1(x: integer); +begin + s := 'integer'; +end; + +procedure p1(x: longword); +begin + s := 'longword'; +end; + +procedure p2(x: smallint); +begin + s := 'smallint'; +end; + +procedure p2(x: longword); +begin + s := 'longword'; +end; + + +begin + var a: shortint := -128; + var b: smallint := -128; + p(a); + assert(s='integer'); + p(b); + assert(s='integer'); + p1(a); + assert(s='integer'); + p2(a); + assert(s='smallint'); + p2(b); + assert(s='smallint'); +end. \ No newline at end of file diff --git a/TreeConverter/SystemLib/StaticSystemLib.cs b/TreeConverter/SystemLib/StaticSystemLib.cs index c6aa910d8..b88814b7c 100644 --- a/TreeConverter/SystemLib/StaticSystemLib.cs +++ b/TreeConverter/SystemLib/StaticSystemLib.cs @@ -1237,7 +1237,7 @@ namespace PascalABCCompiler.SystemLibrary _int_to_sbyte = make_type_conversion(_integer_type, _sbyte_type, type_compare.greater_type, SemanticTree.basic_function_type.itosb); _int_to_short = make_type_conversion(_integer_type, _short_type, type_compare.greater_type, SemanticTree.basic_function_type.itos); _int_to_ushort = make_type_conversion(_integer_type, _ushort_type, type_compare.greater_type, SemanticTree.basic_function_type.itous); - _int_to_uint = make_type_conversion(_integer_type, _uint_type, type_compare.greater_type, SemanticTree.basic_function_type.itoui); + _int_to_uint = make_type_conversion(_integer_type, _uint_type, type_compare.less_type, SemanticTree.basic_function_type.itoui); _int_to_long = make_type_conversion(_integer_type, _int64_type, type_compare.less_type, SemanticTree.basic_function_type.itol); _int_to_ulong = make_type_conversion(_integer_type, _uint64_type, type_compare.less_type, SemanticTree.basic_function_type.itoul); _int_to_char = make_type_conversion(_integer_type, _char_type, type_compare.greater_type, SemanticTree.basic_function_type.itochar, false); @@ -1380,27 +1380,6 @@ namespace PascalABCCompiler.SystemLibrary add_function_to_type(compiler_string_consts.idiv_name, _sbyte_type, _int_idiv); add_function_to_type(compiler_string_consts.mod_name, _sbyte_type, _int_mod); - /*add_funtion_to_type(compiler_string_consts.and_name, _sbyte_type, _int_and); - add_funtion_to_type(compiler_string_consts.or_name, _sbyte_type, _int_or); - add_funtion_to_type(compiler_string_consts.xor_name, _sbyte_type, _int_xor);*/ - - //Опрерации сравнения. - /* - _sbyte_gr = make_binary_operator(compiler_string_consts.gr_name, _sbyte_type, SemanticTree.basic_function_type.sbgr, _bool_type); - _sbyte_greq = make_binary_operator(compiler_string_consts.greq_name, _sbyte_type, SemanticTree.basic_function_type.sbgreq, _bool_type); - _sbyte_sm = make_binary_operator(compiler_string_consts.sm_name, _sbyte_type, SemanticTree.basic_function_type.sbsm, _bool_type); - _sbyte_smeq = make_binary_operator(compiler_string_consts.smeq_name, _sbyte_type, SemanticTree.basic_function_type.sbsmeq, _bool_type); - _sbyte_eq = make_binary_operator(compiler_string_consts.eq_name, _sbyte_type, SemanticTree.basic_function_type.sbeq, _bool_type); - _sbyte_noteq = make_binary_operator(compiler_string_consts.noteq_name, _sbyte_type, SemanticTree.basic_function_type.sbnoteq, _bool_type); - */ - //Арифметические операции. - /* - _sbyte_add = make_common_binary_operation(compiler_string_consts.plus_name, _sbyte_type, _sbyte_type, _sbyte_type, SemanticTree.basic_function_type.sbadd, _integer_type); - _sbyte_sub = make_common_binary_operation(compiler_string_consts.minus_name, _sbyte_type, _sbyte_type, _sbyte_type, SemanticTree.basic_function_type.sbsub, _integer_type); - _sbyte_mul = make_common_binary_operation(compiler_string_consts.mul_name, _sbyte_type, _sbyte_type, _sbyte_type, SemanticTree.basic_function_type.sbmul, _integer_type); - _sbyte_idiv = make_common_binary_operation(compiler_string_consts.idiv_name, _sbyte_type, _sbyte_type, _sbyte_type, SemanticTree.basic_function_type.sbdiv, _integer_type); - _sbyte_mod = make_common_binary_operation(compiler_string_consts.mod_name, _sbyte_type, _sbyte_type, _sbyte_type, SemanticTree.basic_function_type.sbmod, _integer_type); - */ //Операция / для byte. _sbyte_div = make_common_binary_operation(compiler_string_consts.div_name, _sbyte_type, _double_type, _double_type, SemanticTree.basic_function_type.ddiv, _double_type); @@ -1419,7 +1398,7 @@ namespace PascalABCCompiler.SystemLibrary //Преобразования shortов. _short_to_byte = make_type_conversion(_short_type, _byte_type, type_compare.greater_type, SemanticTree.basic_function_type.stob); _short_to_sbyte = make_type_conversion(_short_type, _sbyte_type, type_compare.greater_type, SemanticTree.basic_function_type.stosb); - _short_to_ushort = make_type_conversion(_short_type, _ushort_type, type_compare.greater_type, SemanticTree.basic_function_type.stous); + _short_to_ushort = make_type_conversion(_short_type, _ushort_type, type_compare.less_type, SemanticTree.basic_function_type.stous); _short_to_uint = make_type_conversion(_short_type, _uint_type, type_compare.less_type, SemanticTree.basic_function_type.stoui); _short_to_long = make_type_conversion(_short_type, _int64_type, type_compare.less_type, SemanticTree.basic_function_type.stol); _short_to_ulong = make_type_conversion(_short_type, _uint64_type, type_compare.less_type, SemanticTree.basic_function_type.stoul); @@ -1452,23 +1431,6 @@ namespace PascalABCCompiler.SystemLibrary add_funtion_to_type(compiler_string_consts.or_name, _short_type, _int_or); add_funtion_to_type(compiler_string_consts.xor_name, _short_type, _int_xor);*/ - //Опрерации сравнения. - /* - _short_gr = make_binary_operator(compiler_string_consts.gr_name, _short_type, SemanticTree.basic_function_type.sgr, _bool_type); - _short_greq = make_binary_operator(compiler_string_consts.greq_name, _short_type, SemanticTree.basic_function_type.sgreq, _bool_type); - _short_sm = make_binary_operator(compiler_string_consts.sm_name, _short_type, SemanticTree.basic_function_type.ssm, _bool_type); - _short_smeq = make_binary_operator(compiler_string_consts.smeq_name, _short_type, SemanticTree.basic_function_type.ssmeq, _bool_type); - _short_eq = make_binary_operator(compiler_string_consts.eq_name, _short_type, SemanticTree.basic_function_type.seq, _bool_type); - _short_noteq = make_binary_operator(compiler_string_consts.noteq_name, _short_type, SemanticTree.basic_function_type.snoteq, _bool_type); - */ - //Арифметические операции. - /* - _short_add = make_common_binary_operation(compiler_string_consts.plus_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.sadd, _integer_type); - _short_sub = make_common_binary_operation(compiler_string_consts.minus_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.ssub, _integer_type); - _short_mul = make_common_binary_operation(compiler_string_consts.mul_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.smul, _integer_type); - _short_idiv = make_common_binary_operation(compiler_string_consts.idiv_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.sdiv, _integer_type); - _short_mod = make_common_binary_operation(compiler_string_consts.mod_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.smod, _integer_type); - */ //Операция / для byte. _short_div = make_common_binary_operation(compiler_string_consts.div_name, _short_type, _double_type, _double_type, SemanticTree.basic_function_type.ddiv, _double_type); @@ -1487,7 +1449,7 @@ namespace PascalABCCompiler.SystemLibrary //Преобразования ushortов. _ushort_to_byte = make_type_conversion(_ushort_type, _byte_type, type_compare.greater_type, SemanticTree.basic_function_type.ustob); _ushort_to_sbyte = make_type_conversion(_ushort_type, _sbyte_type, type_compare.greater_type, SemanticTree.basic_function_type.ustosb); - _ushort_to_short = make_type_conversion(_ushort_type, _short_type, type_compare.less_type, SemanticTree.basic_function_type.ustos); + _ushort_to_short = make_type_conversion(_ushort_type, _short_type, type_compare.greater_type, SemanticTree.basic_function_type.ustos); _ushort_to_uint = make_type_conversion(_ushort_type, _uint_type, type_compare.less_type, SemanticTree.basic_function_type.ustoui); _ushort_to_long = make_type_conversion(_ushort_type, _int64_type, type_compare.less_type, SemanticTree.basic_function_type.ustol); _ushort_to_ulong = make_type_conversion(_ushort_type, _uint64_type, type_compare.less_type, SemanticTree.basic_function_type.ustoul); @@ -1549,48 +1511,7 @@ namespace PascalABCCompiler.SystemLibrary add_function_to_type(compiler_string_consts.shl_name, _ushort_type, _int_shl); add_function_to_type(compiler_string_consts.shr_name, _ushort_type, _int_shr); - /* - //short type. - //Assign. - _short_assign = make_assign_operator(_short_type, SemanticTree.basic_function_type.sassign); - //Преобразования shortов. - _short_to_byte = make_type_conversion(_short_type, _byte_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stob, false); - _short_to_sbyte = make_type_conversion(_short_type, _sbyte_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stosb, false); - _short_to_ushort = make_type_conversion(_short_type, _ushort_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stous); - _short_to_uint = make_type_conversion(_short_type, _uint_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stoui,false); - _short_to_long = make_type_conversion(_short_type, _long_type, type_compare.less_type, SemanticTree.basic_function_type.stol); - _short_to_ulong = make_type_conversion(_short_type, _ulong_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stoul); - _short_to_int = make_type_conversion(_short_type, _integer_type, type_compare.less_type, SemanticTree.basic_function_type.stoi); - _short_to_char = make_type_conversion(_short_type, _char_type, type_compare.non_comparable_type, SemanticTree.basic_function_type.stochar, false); - _short_to_float = make_type_conversion(_short_type, _real_type, type_compare.less_type, SemanticTree.basic_function_type.stof); - _short_to_double = make_type_conversion(_short_type, _long_type, type_compare.less_type, SemanticTree.basic_function_type.stod); - //Унарные операции. - _short_unmin = make_unary_operator(compiler_string_consts.minus_name, _short_type, SemanticTree.basic_function_type.sunmin); - _short_not = make_unary_operator(compiler_string_consts.not_name, _short_type, SemanticTree.basic_function_type.snot); - make_unary_empty_operator(compiler_string_consts.plus_name, _short_type, _short_type); - //Опрерации сравнения. - _short_gr = make_binary_operator(compiler_string_consts.gr_name, _short_type, SemanticTree.basic_function_type.sgr, _bool_type); - _short_greq = make_binary_operator(compiler_string_consts.greq_name, _short_type, SemanticTree.basic_function_type.sgreq, _bool_type); - _short_sm = make_binary_operator(compiler_string_consts.sm_name, _short_type, SemanticTree.basic_function_type.ssm, _bool_type); - _short_smeq = make_binary_operator(compiler_string_consts.smeq_name, _short_type, SemanticTree.basic_function_type.ssmeq, _bool_type); - _short_eq = make_binary_operator(compiler_string_consts.eq_name, _short_type, SemanticTree.basic_function_type.seq, _bool_type); - _short_noteq = make_binary_operator(compiler_string_consts.noteq_name, _short_type, SemanticTree.basic_function_type.snoteq, _bool_type); - //Арифметические операции. - _short_add = make_common_binary_operation(compiler_string_consts.plus_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.sadd, _integer_type); - _short_sub = make_common_binary_operation(compiler_string_consts.minus_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.ssub, _integer_type); - _short_mul = make_common_binary_operation(compiler_string_consts.mul_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.smul, _integer_type); - _short_idiv = make_common_binary_operation(compiler_string_consts.idiv_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.sdiv, _integer_type); - _short_mod = make_common_binary_operation(compiler_string_consts.mod_name, _short_type, _short_type, _short_type, SemanticTree.basic_function_type.smod, _integer_type); - //Операция / для byte. - _short_div = make_common_binary_operation(compiler_string_consts.div_name, _short_type, _real_type, _real_type, - SemanticTree.basic_function_type.ddiv, _real_type); - //Логические опреции. - _short_and = make_common_binary_operation(compiler_string_consts.and_name, _short_type, _integer_type, _integer_type, SemanticTree.basic_function_type.sand, _integer_type); - _short_or = make_common_binary_operation(compiler_string_consts.or_name, _short_type, _integer_type, _integer_type, SemanticTree.basic_function_type.sor, _integer_type); - _short_xor = make_common_binary_operation(compiler_string_consts.xor_name, _short_type, _integer_type, _integer_type, SemanticTree.basic_function_type.sxor, _integer_type); - add_funtion_to_type(compiler_string_consts.shl_name, _short_type, _int_shl); - add_funtion_to_type(compiler_string_consts.shr_name, _short_type, _int_shr); - */ + //uint type. //Assign. @@ -1602,7 +1523,7 @@ namespace PascalABCCompiler.SystemLibrary _uint_to_ushort = make_type_conversion(_uint_type, _ushort_type, type_compare.greater_type, SemanticTree.basic_function_type.uitous); _uint_to_long = make_type_conversion(_uint_type, _int64_type, type_compare.less_type, SemanticTree.basic_function_type.uitol); _uint_to_ulong = make_type_conversion(_uint_type, _uint64_type, type_compare.less_type, SemanticTree.basic_function_type.uitoul); - _uint_to_int = make_type_conversion(_uint_type, _integer_type, type_compare.less_type, SemanticTree.basic_function_type.uitoi); + _uint_to_int = make_type_conversion(_uint_type, _integer_type, type_compare.greater_type, SemanticTree.basic_function_type.uitoi); _uint_to_char = make_type_conversion(_uint_type, _char_type, type_compare.greater_type, SemanticTree.basic_function_type.uitochar,false); _uint_to_float = make_type_conversion(_uint_type, _float_type, type_compare.less_type, SemanticTree.basic_function_type.uitof); _uint_to_double = make_type_conversion(_uint_type, _double_type, type_compare.less_type, SemanticTree.basic_function_type.uitod); @@ -1691,7 +1612,7 @@ namespace PascalABCCompiler.SystemLibrary _long_to_short = make_type_conversion(_int64_type, _short_type, type_compare.greater_type, SemanticTree.basic_function_type.ltos); _long_to_ushort = make_type_conversion(_int64_type, _ushort_type, type_compare.greater_type, SemanticTree.basic_function_type.ltous); _long_to_uint = make_type_conversion(_int64_type, _uint_type, type_compare.greater_type, SemanticTree.basic_function_type.ltoui); - _long_to_ulong = make_type_conversion(_int64_type, _uint64_type, type_compare.greater_type, SemanticTree.basic_function_type.ltoul); + _long_to_ulong = make_type_conversion(_int64_type, _uint64_type, type_compare.less_type, SemanticTree.basic_function_type.ltoul); _long_to_int = make_type_conversion(_int64_type, _integer_type, type_compare.greater_type, SemanticTree.basic_function_type.ltoi); _long_to_char = make_type_conversion(_int64_type, _char_type, type_compare.greater_type, SemanticTree.basic_function_type.ltochar,false); _long_to_float = make_type_conversion(_int64_type, _float_type, type_compare.less_type, SemanticTree.basic_function_type.ltof); @@ -1764,7 +1685,7 @@ namespace PascalABCCompiler.SystemLibrary _ulong_to_short = make_type_conversion(_uint64_type, _short_type, type_compare.greater_type, SemanticTree.basic_function_type.ultos); _ulong_to_ushort = make_type_conversion(_uint64_type, _ushort_type, type_compare.greater_type, SemanticTree.basic_function_type.ultous); _ulong_to_uint = make_type_conversion(_uint64_type, _uint_type, type_compare.greater_type, SemanticTree.basic_function_type.ultoui); - _ulong_to_long = make_type_conversion(_uint64_type, _int64_type, type_compare.less_type, SemanticTree.basic_function_type.ultol); + _ulong_to_long = make_type_conversion(_uint64_type, _int64_type, type_compare.greater_type, SemanticTree.basic_function_type.ultol); _ulong_to_int = make_type_conversion(_uint64_type, _integer_type, type_compare.greater_type, SemanticTree.basic_function_type.ultoi); _ulong_to_char = make_type_conversion(_uint64_type, _char_type, type_compare.greater_type, SemanticTree.basic_function_type.ultochar,false); _ulong_to_float = make_type_conversion(_uint64_type, _float_type, type_compare.less_type, SemanticTree.basic_function_type.ultof); @@ -1843,87 +1764,7 @@ namespace PascalABCCompiler.SystemLibrary make_function_comparison(_int_or, _ulong_or, function_compare.less); make_function_comparison(_int_xor, _ulong_xor, function_compare.less); - /*make_function_comparison(_int_add, _ulong_add, function_compare.greater); - make_function_comparison(_int_sub, _ulong_sub, function_compare.greater); - make_function_comparison(_int_mul, _ulong_mul, function_compare.greater); - make_function_comparison(_int_idiv, _ulong_idiv, function_compare.greater); - make_function_comparison(_int_gr, _ulong_gr, function_compare.greater); - make_function_comparison(_int_greq, _ulong_greq, function_compare.greater); - make_function_comparison(_int_sm, _ulong_sm, function_compare.greater); - make_function_comparison(_int_smeq, _ulong_smeq, function_compare.greater); - make_function_comparison(_int_eq, _ulong_eq, function_compare.greater); - make_function_comparison(_int_noteq, _ulong_noteq, function_compare.greater); - make_function_comparison(_int_and, _ulong_and, function_compare.greater); - make_function_comparison(_int_or, _ulong_or, function_compare.greater); - make_function_comparison(_int_xor, _ulong_xor, function_compare.greater);*/ - - /*make_function_comparison(_long_add, _ulong_add, function_compare.non_comparable); - make_function_comparison(_long_sub, _ulong_sub, function_compare.non_comparable); - make_function_comparison(_long_mul, _ulong_mul, function_compare.non_comparable); - make_function_comparison(_long_idiv, _ulong_idiv, function_compare.non_comparable); - make_function_comparison(_long_mod, _ulong_mod, function_compare.non_comparable); - make_function_comparison(_long_gr, _ulong_gr, function_compare.greater); - make_function_comparison(_long_greq, _ulong_greq, function_compare.greater); - make_function_comparison(_long_sm, _ulong_sm, function_compare.greater); - make_function_comparison(_long_smeq, _ulong_smeq, function_compare.greater); - make_function_comparison(_long_eq, _ulong_eq, function_compare.greater); - make_function_comparison(_long_noteq, _ulong_noteq, function_compare.greater); - make_function_comparison(_long_and, _ulong_and, function_compare.greater); - make_function_comparison(_long_or, _ulong_or, function_compare.greater); - make_function_comparison(_long_xor, _ulong_xor, function_compare.greater); - - make_function_comparison(_int_add, _ulong_add, function_compare.non_comparable); - make_function_comparison(_int_sub, _ulong_sub, function_compare.non_comparable); - make_function_comparison(_int_mul, _ulong_mul, function_compare.non_comparable); - make_function_comparison(_int_idiv, _ulong_idiv, function_compare.non_comparable); - make_function_comparison(_int_gr, _ulong_gr, function_compare.greater); - make_function_comparison(_int_greq, _ulong_greq, function_compare.greater); - make_function_comparison(_int_sm, _ulong_sm, function_compare.greater); - make_function_comparison(_int_smeq, _ulong_smeq, function_compare.greater); - make_function_comparison(_int_eq, _ulong_eq, function_compare.greater); - make_function_comparison(_int_noteq, _ulong_noteq, function_compare.greater); - make_function_comparison(_int_and, _ulong_and, function_compare.greater); - make_function_comparison(_int_or, _ulong_or, function_compare.greater); - make_function_comparison(_int_xor, _ulong_xor, function_compare.greater); - - make_common_binary_operation(compiler_string_consts.plus_name, _ulong_type, _ulong_type, _ushort_type, SemanticTree.basic_function_type.uladd, _ulong_type); - make_common_binary_operation(compiler_string_consts.minus_name, _ulong_type, _ulong_type, _ushort_type, SemanticTree.basic_function_type.ulsub, _ulong_type); - make_common_binary_operation(compiler_string_consts.mul_name, _ulong_type, _ulong_type, _ushort_type, SemanticTree.basic_function_type.ulmul, _ulong_type); - make_common_binary_operation(compiler_string_consts.idiv_name, _ulong_type, _ulong_type, _ushort_type, SemanticTree.basic_function_type.uldiv, _ulong_type); - make_common_binary_operation(compiler_string_consts.mod_name, _ulong_type, _ulong_type, _ushort_type, SemanticTree.basic_function_type.ulmod, _ulong_type); - - make_common_binary_operation(compiler_string_consts.plus_name, _ulong_type, _ulong_type, _byte_type, SemanticTree.basic_function_type.uladd, _ulong_type); - make_common_binary_operation(compiler_string_consts.minus_name, _ulong_type, _ulong_type, _byte_type, SemanticTree.basic_function_type.ulsub, _ulong_type); - make_common_binary_operation(compiler_string_consts.mul_name, _ulong_type, _ulong_type, _byte_type, SemanticTree.basic_function_type.ulmul, _ulong_type); - make_common_binary_operation(compiler_string_consts.idiv_name, _ulong_type, _ulong_type, _byte_type, SemanticTree.basic_function_type.uldiv, _ulong_type); - make_common_binary_operation(compiler_string_consts.mod_name, _ulong_type, _ulong_type, _byte_type, SemanticTree.basic_function_type.ulmod, _ulong_type);*/ - /*make_function_comparison(_ushort_add, _ulong_add, function_compare.less); - make_function_comparison(_ushort_sub, _ulong_sub, function_compare.less); - make_function_comparison(_ushort_mul, _ulong_mul, function_compare.less); - make_function_comparison(_ushort_idiv, _ulong_idiv, function_compare.less); - make_function_comparison(_ushort_gr, _ulong_gr, function_compare.less); - make_function_comparison(_ushort_greq, _ulong_greq, function_compare.less); - make_function_comparison(_ushort_sm, _ulong_sm, function_compare.less); - make_function_comparison(_ushort_smeq, _ulong_smeq, function_compare.less); - make_function_comparison(_ushort_eq, _ulong_eq, function_compare.less); - make_function_comparison(_ushort_noteq, _ulong_noteq, function_compare.less); - make_function_comparison(_ushort_and, _ulong_and, function_compare.less); - make_function_comparison(_ushort_or, _ulong_or, function_compare.less); - make_function_comparison(_ushort_xor, _ulong_xor, function_compare.less); - - make_function_comparison(_byte_add, _ulong_add, function_compare.less); - make_function_comparison(_byte_sub, _ulong_sub, function_compare.less); - make_function_comparison(_byte_mul, _ulong_mul, function_compare.less); - make_function_comparison(_byte_idiv, _ulong_idiv, function_compare.less); - make_function_comparison(_byte_gr, _ulong_gr, function_compare.less); - make_function_comparison(_byte_greq, _ulong_greq, function_compare.less); - make_function_comparison(_byte_sm, _ulong_sm, function_compare.less); - make_function_comparison(_byte_smeq, _ulong_smeq, function_compare.less); - make_function_comparison(_byte_eq, _ulong_eq, function_compare.less); - make_function_comparison(_byte_noteq, _ulong_noteq, function_compare.less); - make_function_comparison(_byte_and, _ulong_and, function_compare.less); - make_function_comparison(_byte_or, _ulong_or, function_compare.less); - make_function_comparison(_byte_xor, _ulong_xor, function_compare.less);*/ + make_function_comparison(_ulong_add, _uint_add, function_compare.greater); make_function_comparison(_ulong_sub, _uint_sub, function_compare.greater);