Skip to main content

lower_instruction

Function lower_instruction 

Source
pub fn lower_instruction(
    ast: &PcodeAst,
    context: &impl PcodeLoweringContext,
) -> Result<InstructionPcode, PcodeLowerError>
Expand description

Lowers a fully expanded source-shaped AST to Ghidra-style instruction p-code.

The AST must be in consumer form: build, export, delay-slot, macro, deferred-name, field, and table nodes are rejected. The lowerer allocates deterministic temporaries in PcodeLoweringContext::unique_space.

Bit ranges are expanded into shifts, masks, and SUBPIECE rather than Ghidra’s analysis-only INSERT and EXTRACT pseudo-operations. Range writes whose parent storage exceeds 64 bits are rejected because this source AST’s literals cannot represent their full clear mask.