pub mod control_flow;
pub mod data_flow;
pub mod type_inference;
pub mod inter_procedural;
pub mod loop_analysis;
#[derive(Debug, Clone, PartialEq)]
pub enum TypeInfo {
Unknown,
Void,
Integer { signed: bool, size: u8 },
Pointer { pointee: Box<TypeInfo> },
Float { size: u8 },
Array { element: Box<TypeInfo>, size: usize },
Struct { name: String, fields: Vec<(String, TypeInfo)> },
}
#[derive(Debug, Clone)]
pub struct FunctionMetadata {
pub address: u32,
pub name: String,
pub size: u32,
pub calling_convention: String,
pub parameters: Vec<ParameterInfo>,
pub return_type: Option<TypeInfo>,
pub local_variables: Vec<VariableInfo>,
pub basic_blocks: Vec<u32>,
}
#[derive(Debug, Clone)]
pub struct ParameterInfo {
pub name: String,
pub type_info: TypeInfo,
pub register: Option<u8>,
pub stack_offset: i32,
}
#[derive(Debug, Clone)]
pub struct VariableInfo {
pub name: String,
pub type_info: TypeInfo,
pub stack_offset: i32,
pub scope_start: u32,
pub scope_end: u32,
}