Beispiel #1
0
        public void executeLDR()
        {
            int operand2int = Convert.ToInt32(operand2);

            if (u == 0)
            {
                operand2int *= -1;
            }
            //gettin rn
            if (p == 1)
            {
                addr = (uint)(myRegister.ReadWord(rn) + operand2int);
            }
            else if (p == 0)
            {
                addr = myRegister.ReadWord(rn);
            }
            //performing the load
            if (bs == 0)
            {
                if (!disassembling)
                {
                    myRegister.WriteWord(rd, myMemory.ReadWord(addr));
                }
                disassembly = "ldr" + Instructions.firstOpcode + " ";
            }
            else if (bs == 1)
            {
                if (!disassembling)
                {
                    myRegister.WriteWord(rd, myMemory.ReadByte(addr));
                }
                disassembly = "ldrb" + Instructions.firstOpcode + " ";
            }

            disassembly += "r" + Convert.ToString(rd);

            //writeback?
            if (p == 1 && w == 1)
            {
                if (!disassembling)
                {
                    myRegister.WriteWord(rn, addr);
                }
                disassembly += "!";
            }

            disassembly += ", [r" + Convert.ToString(rn) + opTwoDissasembly + "]";
        }
Beispiel #2
0
 //Method:       Constructor
 //Purpose:      Sets CPU up for use.
 //Variables:    toMemory - Memory object that Computer setup.
 //              toRegisters - Registers object that Computer setup.
 //              programCounter - uint signifying where to start fetch at.
 public CPU(Memory toMemory, Registers toRegisters, uint programCounter)
 {
     disassembling = false;
     myMemory = toMemory;
     myRegisters = toRegisters;
     myRegisters.WriteWord(15, programCounter);
 }
Beispiel #3
0
 //Method:       Constructor
 //Purpose:      Sets CPU up for use.
 //Variables:    toMemory - Memory object that Computer setup.
 //              toRegisters - Registers object that Computer setup.
 //              programCounter - uint signifying where to start fetch at.
 public CPU(Memory toMemory, Registers toRegisters, uint programCounter)
 {
     disassembling = false;
     myMemory      = toMemory;
     myRegisters   = toRegisters;
     myRegisters.WriteWord(15, programCounter);
 }
Beispiel #4
0
 public void executeMUL()
 {
     myRegister.WriteWord(rd, (myRegister.ReadWord(rs) * myRegister.ReadWord(rm)));
 }
Beispiel #5
0
 public void executeB()
 {
     Computer.storedBranchPC = (int)myRegister.ReadWord(15) - 8;
     myRegister.WriteWord(15, myRegister.ReadWord(15) + 4 + targetAddr);
 }
Beispiel #6
0
 public void executeMOV()
 {
     myRegister.WriteWord(rd, operand2);
 }