private Word MakeFirstWord() { UInt16 opcode = m_operand.Opcode; UInt16 rr1 = m_operand.GetRR1(); UInt16 xr2 = m_operand.GetXR2(); return(InstructionWord.MakeFirstWord(opcode, rr1, xr2)); }
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); }