Hello world finally works.

Sample working code:
.data:
text0 "Hello, World!\n"
.code:
sd.int32 $4 123
sd.int32 $5 321
sd.int32 $10 1
sd.int32 $11 text0
sd.int32 $12 14
sys 4

sd.int32 $10 100
sys 1
bmath add Int32 $4 $5 $6
This commit is contained in:
2025-08-01 03:43:09 +10:00
parent 269a2b51be
commit 6eb87e433e
11 changed files with 210 additions and 28 deletions

View File

@@ -15,7 +15,7 @@ namespace SVM.Assembler.Core
{
public Dictionary<string, byte> RegisterNames = new Dictionary<string, byte>();
public Dictionary<string, Dictionary<string, string>> Enums = new Dictionary<string, Dictionary<string, string>>();
public Dictionary<PrimaryInstruction, InstructionDefinition> InstructionDefinitions = new Dictionary<PrimaryInstruction, InstructionDefinition>();
public Dictionary<string, InstructionDefinition> InstructionDefinitions = new Dictionary<string, InstructionDefinition>();
[NonSerialized]
public Dictionary<string, InstructionDefinition> InstructionDefinitionAliases = new Dictionary<string, InstructionDefinition>();
public void Init()
@@ -117,7 +117,11 @@ namespace SVM.Assembler.Core
InstructionDefinition instDefinition = new InstructionDefinition();
var PIAttr = node.Attributes.GetNamedItem("PrimaryInstruction");
var ICAttr = node.Attributes.GetNamedItem("InstructionCount");
var IdAttr = node.Attributes.GetNamedItem("Id");
if (PIAttr == null) return false;
if (IdAttr == null) return false;
string Id = IdAttr.InnerText;
instDefinition.Id = Id;
if (ICAttr != null)
{
if (int.TryParse(ICAttr.InnerText, out var ic))
@@ -171,7 +175,7 @@ namespace SVM.Assembler.Core
break;
}
}
definition.InstructionDefinitions.Add(pi, instDefinition);
definition.InstructionDefinitions.Add(Id, instDefinition);
foreach (var item in instDefinition.Aliases)
{