mirror of
https://github.com/creeperlv/SVM.git
synced 2026-01-11 04:49:53 +00:00
Implemented Save.
Added definition of SAVE.
This commit is contained in:
@@ -169,5 +169,34 @@
|
|||||||
</InstructionParameter>
|
</InstructionParameter>
|
||||||
</Parameters>
|
</Parameters>
|
||||||
</InstructionDefinition>
|
</InstructionDefinition>
|
||||||
|
<InstructionDefinition Id="load" PrimaryInstruction="Save" InstructionCount="1">
|
||||||
|
<Aliases>
|
||||||
|
<Alias Name="load"/>
|
||||||
|
<Alias Name="ld"/>
|
||||||
|
</Aliases>
|
||||||
|
<Parameters>
|
||||||
|
<InstructionParameter>
|
||||||
|
<MatchingItems>
|
||||||
|
<Item Id="Register"/>
|
||||||
|
<Item Id="Word"/>
|
||||||
|
</MatchingItems>
|
||||||
|
<ExpectedValue Type="UInt8" Pos="1" Converter="Register" />
|
||||||
|
</InstructionParameter>
|
||||||
|
<InstructionParameter>
|
||||||
|
<MatchingItems>
|
||||||
|
<Item Id="Number"/>
|
||||||
|
<Item Id="Word"/>
|
||||||
|
</MatchingItems>
|
||||||
|
<ExpectedValue Type="UInt8" Pos="2" Converter="UInt8" />
|
||||||
|
</InstructionParameter>
|
||||||
|
<InstructionParameter>
|
||||||
|
<MatchingItems>
|
||||||
|
<Item Id="Register"/>
|
||||||
|
<Item Id="Word"/>
|
||||||
|
</MatchingItems>
|
||||||
|
<ExpectedValue Type="UInt8" Pos="3" Converter="Register" />
|
||||||
|
</InstructionParameter>
|
||||||
|
</Parameters>
|
||||||
|
</InstructionDefinition>
|
||||||
</Definitions>
|
</Definitions>
|
||||||
</ISARoot>
|
</ISARoot>
|
||||||
@@ -36,6 +36,8 @@
|
|||||||
// 0 1 2 3
|
// 0 1 2 3
|
||||||
// Load [R]Address [I]Len [R]T
|
// Load [R]Address [I]Len [R]T
|
||||||
Load,
|
Load,
|
||||||
|
// 0 1 2 3
|
||||||
|
// Load [R]Src [I]Len [R]TAddr
|
||||||
Save,
|
Save,
|
||||||
// 0
|
// 0
|
||||||
// Call
|
// Call
|
||||||
|
|||||||
@@ -182,6 +182,15 @@ namespace SVM.Core
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case PrimaryInstruction.Save:
|
case PrimaryInstruction.Save:
|
||||||
|
{
|
||||||
|
var Reg = Instruction.GetData<byte>(1);
|
||||||
|
var Length = Instruction.GetData<byte>(2);
|
||||||
|
var Target = Instruction.GetData<byte>(3);
|
||||||
|
var tgtSVMPtr = registers.GetData<SVMPointer>(Target);
|
||||||
|
var tgtPtr = GetPointer(tgtSVMPtr);
|
||||||
|
var srcPtr = registers.GetPtr(Reg);
|
||||||
|
Buffer.MemoryCopy(srcPtr, (byte*)tgtPtr, Length, Length);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PrimaryInstruction.Call:
|
case PrimaryInstruction.Call:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user