mirror of
https://github.com/creeperlv/SVM.git
synced 2026-01-11 12:59:54 +00:00
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:
@@ -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)
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user