23 lines
720 B
Rust
23 lines
720 B
Rust
//! 类型安全操作数。IR 中不出现裸寄存器下标。
|
||
//!
|
||
//! - `Reg(u32)`:寄存器。本阶段存物理号(≤253);254/255 为 VM 保留,语义由 `This`/`NewTarget` 表达
|
||
//! - `Const(u16)`:常量池下标
|
||
//! - `Label(u32)`:跳转目标(`LabelId`)
|
||
//! - `Imm(u16)`:立即数
|
||
//! - `This` / `NewTarget`:语义化特殊寄存器,由 lowering 映射物理 254/255(IR 中禁止裸下标)
|
||
//! - `None`:操作数槽未使用
|
||
|
||
/// 统一跳转目标标识(取代语义化 `Label` 枚举)。
|
||
pub type LabelId = u32;
|
||
|
||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||
pub enum Operand {
|
||
Reg(u32),
|
||
Const(u16),
|
||
Label(u32),
|
||
Imm(u16),
|
||
This,
|
||
NewTarget,
|
||
None,
|
||
}
|