示例#1
0
        private InstructionPayload ComposeRegister(Instruction ins, RvcPayload payload)
        {
            // Set the opcode, type and coding
            InstructionPayload p = new InstructionPayload(ins, payload.Coding);

            if (payload.Op == 1 && payload.Funct3 == 4 && payload.Funct2 == 3)
            {
                var mode = payload.Funct6 & 0x07;

                if (mode == 0x03)
                {
                    // F4 = 8
                    parser32.ParseCaGeneric(payload, p);
                }

                if (mode == 0x07)
                {
                    // F4 = 9 => C.SUBW / C.ADDW
                    parser64.ParseAddWSubW(payload, p);
                }
            }

            if (payload.Op == 2 && payload.Funct3 == 4)
            {
                parser32.ParseAddAndMv(payload, p);
            }


            return(p);
        }
示例#2
0
        private InstructionPayload ComposeRegister(Instruction ins, RvcPayload payload)
        {
            // Set the opcode, type and coding
            InstructionPayload p = new InstructionPayload(ins, payload.Coding);

            if (payload.Op == 1 && payload.Funct3 == 4 && payload.Funct2 == 3)
            {
                parser32.ParseCaGeneric(payload, p);
            }

            if (payload.Op == 2 && payload.Funct3 == 4)
            {
                parser32.ParseAddAndMv(payload, p);
            }

            return(p);
        }