feat: 新增引用控制命令

- 添加 RPushCommand、RLoadCommand 和 RStoreCommand 三个引用控制命令类
- 在 CommandFactory 中注册这三个命令
This commit is contained in:
Luke 2025-07-21 16:48:50 +08:00
parent c6067a8758
commit 2cb428ed9b

View File

@ -6,6 +6,9 @@ import org.jcnc.snow.vm.commands.type.control.double64.*;
import org.jcnc.snow.vm.commands.type.control.float32.*; import org.jcnc.snow.vm.commands.type.control.float32.*;
import org.jcnc.snow.vm.commands.type.control.int32.*; import org.jcnc.snow.vm.commands.type.control.int32.*;
import org.jcnc.snow.vm.commands.type.control.long64.*; import org.jcnc.snow.vm.commands.type.control.long64.*;
import org.jcnc.snow.vm.commands.type.control.ref.RLoadCommand;
import org.jcnc.snow.vm.commands.type.control.ref.RPushCommand;
import org.jcnc.snow.vm.commands.type.control.ref.RStoreCommand;
import org.jcnc.snow.vm.commands.type.control.short16.*; import org.jcnc.snow.vm.commands.type.control.short16.*;
import org.jcnc.snow.vm.commands.type.control.byte8.BAndCommand; import org.jcnc.snow.vm.commands.type.control.byte8.BAndCommand;
import org.jcnc.snow.vm.commands.type.control.byte8.BOrCommand; import org.jcnc.snow.vm.commands.type.control.byte8.BOrCommand;
@ -62,6 +65,7 @@ public class CommandFactory {
static { static {
// region Type Control (0x0000-0x00BF) // region Type Control (0x0000-0x00BF)
// region Byte8 (0x0000-0x001F) // region Byte8 (0x0000-0x001F)
COMMANDS[VMOpCode.B_ADD] = new BAddCommand(); COMMANDS[VMOpCode.B_ADD] = new BAddCommand();
@ -205,6 +209,7 @@ public class CommandFactory {
COMMANDS[VMOpCode.D_CL] = new DCLCommand(); COMMANDS[VMOpCode.D_CL] = new DCLCommand();
COMMANDS[VMOpCode.D_CLE] = new DCLECommand(); COMMANDS[VMOpCode.D_CLE] = new DCLECommand();
// endregion // endregion
// endregion // endregion
// region Type Conversion (0x00C0-0x00DF) // region Type Conversion (0x00C0-0x00DF)
@ -245,6 +250,12 @@ public class CommandFactory {
COMMANDS[VMOpCode.D2F] = new D2FCommand(); COMMANDS[VMOpCode.D2F] = new D2FCommand();
// endregion // endregion
// region Reference Control (0x00E0-0x00EF)
COMMANDS[VMOpCode.R_PUSH] = new RPushCommand();
COMMANDS[VMOpCode.R_LOAD] = new RLoadCommand();
COMMANDS[VMOpCode.R_STORE] = new RStoreCommand();
// endregion
// region Stack Control (0x0100-0x01FF) // region Stack Control (0x0100-0x01FF)
COMMANDS[VMOpCode.POP] = new PopCommand(); COMMANDS[VMOpCode.POP] = new PopCommand();
COMMANDS[VMOpCode.DUP] = new DupCommand(); COMMANDS[VMOpCode.DUP] = new DupCommand();