Example #1
0
        }                                           // operation object to perform operations

        public Instruction()
        {
            Disassembly d = new Disassembly();

            ops    = new Operation();
            disasm = d;
        }
Example #2
0
        //--------------------------------------------------------------
        // Purpose: Performs an multiply instruction according to data in <instr>
        // Returns: nothing
        //--------------------------------------------------------------
        public void MUL(Data instr, bool generateDisasm)
        {
            Memory registers = Computer.GetCPU().registers;

            instr.disasm.instruction = "mul";
            uint value = registers.ReadWord((uint)(instr.RM * 4)) * registers.ReadWord((uint)(instr.RS * 4));

            if (generateDisasm)
            {
                instr.disasm.value = Disassembly.DataMul(instr);
            }
            else
            {
                Computer.GetCPU().registers.WriteWord((uint)(instr.RD * 4), value);
            }
        }
Example #3
0
        //--------------------------------------------------------------
        // Purpose: Creates disassembly for data processing instructions and sets it
        // Returns: Nothing
        //--------------------------------------------------------------
        private static void SetDataDisassembly(Data instr, uint value, bool isMov)
        {
            op2Type   op2   = Operation.CheckOperand2(instr);
            shiftType shift = Operation.CheckShiftType(instr);

            if (isMov)
            {
                switch (op2)
                {
                case op2Type.imm:
                    instr.disasm.value = Disassembly.ImmMov(instr, value);
                    break;

                case op2Type.reg_imm:
                    instr.disasm.value = Disassembly.RegImmMov(instr);
                    break;

                case op2Type.reg_reg:
                    instr.disasm.value = Disassembly.RegRegMov(instr);
                    break;
                }
            }
            else
            {
                switch (op2)
                {
                case op2Type.imm:
                    instr.disasm.value = Disassembly.ImmData(instr, value);
                    break;

                case op2Type.reg_imm:
                    instr.disasm.value = Disassembly.RegImmData(instr);
                    break;

                case op2Type.reg_reg:
                    instr.disasm.value = Disassembly.RegRegData(instr);
                    break;
                }
            }
        }