pub enum CoreInstruction {
Show 46 variants
Alloca(GaiaType, usize),
Load(GaiaType),
Store(GaiaType),
Gep {
base_type: GaiaType,
indices: Vec<usize>,
},
Add(GaiaType),
Sub(GaiaType),
Mul(GaiaType),
Div(GaiaType),
Rem(GaiaType),
And(GaiaType),
Or(GaiaType),
Xor(GaiaType),
Shl(GaiaType),
Shr(GaiaType),
Neg(GaiaType),
Not(GaiaType),
Cmp(CmpCondition, GaiaType),
Cast {
from: GaiaType,
to: GaiaType,
kind: CastKind,
},
PushConstant(GaiaConstant),
Pop,
Dup,
LoadLocal(u32, GaiaType),
StoreLocal(u32, GaiaType),
LoadArg(u32, GaiaType),
StoreArg(u32, GaiaType),
Ret,
Br(String),
BrTrue(String),
BrFalse(String),
Label(String),
Call(String, usize),
CallIndirect(usize),
New(String),
NewArray(GaiaType, bool),
LoadField(String, String),
StoreField(String, String),
LoadElement(GaiaType),
StoreElement(GaiaType),
ArrayLength,
ArrayPush,
StructNew(String),
StructGet {
struct_name: String,
field_index: u32,
is_signed: bool,
},
StructSet {
struct_name: String,
field_index: u32,
},
ArrayNew(String),
ArrayGet {
array_name: String,
is_signed: bool,
},
ArraySet(String),
}Expand description
Tier 0: 核心底层指令 (类 LLVM/汇编)
Variants§
Alloca(GaiaType, usize)
栈上分配空间 (类型, 数量)
Load(GaiaType)
从内存加载 (目标寄存器类型, 指针)
Store(GaiaType)
存储到内存 (值类型)
Gep
获取元素指针 (计算偏移量)
Add(GaiaType)
Sub(GaiaType)
Mul(GaiaType)
Div(GaiaType)
Rem(GaiaType)
And(GaiaType)
Or(GaiaType)
Xor(GaiaType)
Shl(GaiaType)
Shr(GaiaType)
Neg(GaiaType)
Not(GaiaType)
Cmp(CmpCondition, GaiaType)
Cast
PushConstant(GaiaConstant)
Pop
Dup
LoadLocal(u32, GaiaType)
加载局部变量
StoreLocal(u32, GaiaType)
存储局部变量
LoadArg(u32, GaiaType)
加载参数
StoreArg(u32, GaiaType)
存储参数
Ret
返回
Br(String)
无条件跳转
BrTrue(String)
真跳转
BrFalse(String)
假跳转
Label(String)
标签
Call(String, usize)
调用函数 (函数名, 参数数量)
CallIndirect(usize)
间接调用 (参数数量). 栈: […, func_ptr, arg1, arg2, …]
New(String)
创建新对象 (类型名)
NewArray(GaiaType, bool)
创建新数组 (元素类型, 长度是否在栈上)
LoadField(String, String)
加载字段 (对象类型, 字段名)
StoreField(String, String)
存储字段 (对象类型, 字段名)
LoadElement(GaiaType)
加载数组元素
StoreElement(GaiaType)
存储数组元素
ArrayLength
获取数组长度
ArrayPush
数组推入元素 (数组, 值)
StructNew(String)
创建 GC 结构体 (类型名)
StructGet
获取 GC 结构体字段 (类型名, 字段索引)
StructSet
设置 GC 结构体字段 (类型名, 字段索引)
ArrayNew(String)
创建 GC 数组 (类型名)
ArrayGet
获取 GC 数组元素 (类型名)
ArraySet(String)
设置 GC 数组元素 (类型名)
Trait Implementations§
Source§impl Clone for CoreInstruction
impl Clone for CoreInstruction
Source§fn clone(&self) -> CoreInstruction
fn clone(&self) -> CoreInstruction
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CoreInstruction
impl Debug for CoreInstruction
Source§impl<'de> Deserialize<'de> for CoreInstruction
impl<'de> Deserialize<'de> for CoreInstruction
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for CoreInstruction
impl PartialEq for CoreInstruction
Source§impl Serialize for CoreInstruction
impl Serialize for CoreInstruction
impl StructuralPartialEq for CoreInstruction
Auto Trait Implementations§
impl Freeze for CoreInstruction
impl RefUnwindSafe for CoreInstruction
impl Send for CoreInstruction
impl Sync for CoreInstruction
impl Unpin for CoreInstruction
impl UnsafeUnpin for CoreInstruction
impl UnwindSafe for CoreInstruction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more