From 2cb428ed9ba992150f0761a92787a6bb3be3a007 Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 21 Jul 2025 16:48:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 RPushCommand、RLoadCommand 和 RStoreCommand 三个引用控制命令类 - 在 CommandFactory 中注册这三个命令 --- .../org/jcnc/snow/vm/factories/CommandFactory.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/org/jcnc/snow/vm/factories/CommandFactory.java b/src/main/java/org/jcnc/snow/vm/factories/CommandFactory.java index dbdab0f..71479a3 100644 --- a/src/main/java/org/jcnc/snow/vm/factories/CommandFactory.java +++ b/src/main/java/org/jcnc/snow/vm/factories/CommandFactory.java @@ -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.int32.*; 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.byte8.BAndCommand; import org.jcnc.snow.vm.commands.type.control.byte8.BOrCommand; @@ -62,6 +65,7 @@ public class CommandFactory { static { + // region Type Control (0x0000-0x00BF) // region Byte8 (0x0000-0x001F) COMMANDS[VMOpCode.B_ADD] = new BAddCommand(); @@ -205,6 +209,7 @@ public class CommandFactory { COMMANDS[VMOpCode.D_CL] = new DCLCommand(); COMMANDS[VMOpCode.D_CLE] = new DCLECommand(); // endregion + // endregion // region Type Conversion (0x00C0-0x00DF) @@ -245,6 +250,12 @@ public class CommandFactory { COMMANDS[VMOpCode.D2F] = new D2FCommand(); // 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) COMMANDS[VMOpCode.POP] = new PopCommand(); COMMANDS[VMOpCode.DUP] = new DupCommand();