gcrecomp_core/recompiler/analysis/
mod.rs1pub mod control_flow;
2pub mod data_flow;
3pub mod type_inference;
4pub mod inter_procedural;
5pub mod loop_analysis;
6
7#[derive(Debug, Clone, PartialEq)]
9pub enum TypeInfo {
10 Unknown,
12 Void,
14 Integer { signed: bool, size: u8 },
16 Pointer { pointee: Box<TypeInfo> },
18 Float { size: u8 },
20 Array { element: Box<TypeInfo>, size: usize },
22 Struct { name: String, fields: Vec<(String, TypeInfo)> },
24}
25
26#[derive(Debug, Clone)]
28pub struct FunctionMetadata {
29 pub address: u32,
31 pub name: String,
33 pub size: u32,
35 pub calling_convention: String,
37 pub parameters: Vec<ParameterInfo>,
39 pub return_type: Option<TypeInfo>,
41 pub local_variables: Vec<VariableInfo>,
43 pub basic_blocks: Vec<u32>,
45}
46
47#[derive(Debug, Clone)]
49pub struct ParameterInfo {
50 pub name: String,
52 pub type_info: TypeInfo,
54 pub register: Option<u8>,
56 pub stack_offset: i32,
58}
59
60#[derive(Debug, Clone)]
62pub struct VariableInfo {
63 pub name: String,
65 pub type_info: TypeInfo,
67 pub stack_offset: i32,
69 pub scope_start: u32,
71 pub scope_end: u32,
73}
74