Exemple #1
0
        private Word MakeFirstWord()
        {
            UInt16 opcode = m_operand.Opcode;
            UInt16 rr1    = m_operand.GetRR1();
            UInt16 xr2    = m_operand.GetXR2();

            return(InstructionWord.MakeFirstWord(opcode, rr1, xr2));
        }
Exemple #2
0
        private void DoExecuteInstruction()
        {
            // PR レジスタが指すアドレスから命令語をフェッチし、デコードします。
            Word           firstWord   = Fetcher.Fetch(m_registerSet.PR, m_memory);
            UInt16         opcode      = InstructionWord.GetOpcode(firstWord);
            CpuInstruction instruction = Decoder.Decode(opcode);

            // 命令語から r/r1 フィールドと x/r2 フィールドを取得し、命令を実行します。
            UInt16 rR1Field = InstructionWord.GetRR1(firstWord);
            UInt16 xR2Field = InstructionWord.GetXR2(firstWord);

            instruction.Execute(rR1Field, xR2Field, m_registerSet, m_memory);
        }