virtualSoC  0.6.2
baskett
Vcsos.mm.vmadr Class Reference
+ Inheritance diagram for Vcsos.mm.vmadr:

Public Member Functions

bool ParseAndRun (ParserFactory factory)
 

Properties

string Name [get]
 
string Info [get]
 

Detailed Description

Member Function Documentation

◆ ParseAndRun()

bool Vcsos.mm.vmadr.ParseAndRun ( ParserFactory  factory)

Implements Vcsos.mm.vmoperator.

37  {
38  InstructionParam2 param1 = factory.getParam(4); // 101 4 105
39  int param1V = VM.Instance.Ram.Read32(VM.Instance.CurrentCore.Register.ip + 5); //106
40 
41  InstructionParam2 param2 = factory.getParam(9); // 110 4 114
42  int param2V = VM.Instance.Ram.Read32(VM.Instance.CurrentCore.Register.ip + 10); //115
43 
44  InstructionParam2 param3 = factory.getParam(14); // 119 4 123
45  int param3V = VM.Instance.Ram.Read32(VM.Instance.CurrentCore.Register.ip + 15);
46 
47 
48  if (param2 == InstructionParam2.Value)
49  VM.Instance.CurrentCore.Register.Stack.Push32(param2V);
50  else if (param2 == InstructionParam2.Register)
51  {
52  VM.Instance.CurrentCore.Register.Stack.Push32(VM.Instance.CurrentCore.Register.Get(factory.m_pRegisters[param2V].Name));
53  }
54  else if (param2 == InstructionParam2.Pointer)
55  VM.Instance.CurrentCore.Register.Stack.Push32(MemoryMap.Read32(param2V));
57  if (param3 == InstructionParam2.Value)
58  VM.Instance.CurrentCore.Register.Stack.Push32(param3V);
59  else if (param3 == InstructionParam2.Register)
60  {
61  VM.Instance.CurrentCore.Register.Stack.Push32(VM.Instance.CurrentCore.Register.Get(factory.m_pRegisters[param3V].Name));
62  }
63  else if (param3 == InstructionParam2.Pointer)
64  VM.Instance.CurrentCore.Register.Stack.Push32(MemoryMap.Read32(param3V));
66  if (param1 == InstructionParam2.Pointer)
67  MemoryMap.Write(
68  VM.Instance.CurrentCore.Akku.Add(VM.Instance.CurrentCore.Register.Stack.Pop32(), VM.Instance.CurrentCore.Register.Stack.Pop32()), (uint)param1V);
69  else if (param1 == InstructionParam2.Register)
70  VM.Instance.CurrentCore.Register.Set(factory.m_pRegisters[param1V].Name, VM.Instance.CurrentCore.Akku.Add(VM.Instance.CurrentCore.Register.Stack.Pop32(), VM.Instance.CurrentCore.Register.Stack.Pop32()));
71 
72  return true;
73  }
InstructionParam2
Typ arten eines Parameter
Definition: Instruction.cs:30

Property Documentation

◆ Info

string Vcsos.mm.vmadr.Info
get

◆ Name

string Vcsos.mm.vmadr.Name
get

The documentation for this class was generated from the following file: