feat: 支持位运算字节码与 ToInt32/ToUint32

This commit is contained in:
爱特每羊队
2026-06-09 14:42:58 +08:00
parent f54383ef63
commit ad8e870997
9 changed files with 347 additions and 1 deletions
+41
View File
@@ -122,6 +122,21 @@ pub enum OpCode {
FORK = 0x70,
JOIN = 0x71,
// -- Bitwise (0x80-0x8F) --
BIT_AND = 0x80,
BIT_OR = 0x81,
BIT_XOR = 0x82,
SHL = 0x83,
SHR = 0x84,
USHR = 0x85,
BIT_NOT = 0x86,
COMPOUND_AND = 0x88,
COMPOUND_OR = 0x89,
COMPOUND_XOR = 0x8A,
COMPOUND_SHL = 0x8B,
COMPOUND_SHR = 0x8C,
COMPOUND_USHR = 0x8D,
// ── Misc (0xF0-0xFF) ──
NOP = 0xF0,
HALT = 0xF1,
@@ -250,6 +265,19 @@ impl TryFrom<u8> for OpCode {
0x66 => Ok(OpCode::PROFILE_CALL),
0x70 => Ok(OpCode::FORK),
0x71 => Ok(OpCode::JOIN),
0x80 => Ok(OpCode::BIT_AND),
0x81 => Ok(OpCode::BIT_OR),
0x82 => Ok(OpCode::BIT_XOR),
0x83 => Ok(OpCode::SHL),
0x84 => Ok(OpCode::SHR),
0x85 => Ok(OpCode::USHR),
0x86 => Ok(OpCode::BIT_NOT),
0x88 => Ok(OpCode::COMPOUND_AND),
0x89 => Ok(OpCode::COMPOUND_OR),
0x8A => Ok(OpCode::COMPOUND_XOR),
0x8B => Ok(OpCode::COMPOUND_SHL),
0x8C => Ok(OpCode::COMPOUND_SHR),
0x8D => Ok(OpCode::COMPOUND_USHR),
0xF0 => Ok(OpCode::NOP),
0xF1 => Ok(OpCode::HALT),
0xF2 => Ok(OpCode::TYPEOF),
@@ -348,6 +376,19 @@ impl fmt::Display for OpCode {
OpCode::PROFILE_CALL => "PROFILE_CALL",
OpCode::FORK => "FORK",
OpCode::JOIN => "JOIN",
OpCode::BIT_AND => "BIT_AND",
OpCode::BIT_OR => "BIT_OR",
OpCode::BIT_XOR => "BIT_XOR",
OpCode::SHL => "SHL",
OpCode::SHR => "SHR",
OpCode::USHR => "USHR",
OpCode::BIT_NOT => "BIT_NOT",
OpCode::COMPOUND_AND => "COMPOUND_AND",
OpCode::COMPOUND_OR => "COMPOUND_OR",
OpCode::COMPOUND_XOR => "COMPOUND_XOR",
OpCode::COMPOUND_SHL => "COMPOUND_SHL",
OpCode::COMPOUND_SHR => "COMPOUND_SHR",
OpCode::COMPOUND_USHR => "COMPOUND_USHR",
OpCode::NOP => "NOP",
OpCode::HALT => "HALT",
OpCode::TYPEOF => "TYPEOF",