示例#1
0
        private void ANDI_Disasm(DisassemblyInfo info)
        {
            int size    = ((op >> 6) & 0x03);
            int dstMode = ((op >> 3) & 0x07);
            int dstReg  = (op & 0x07);

            int pc = info.PC + 2;

            switch (size)
            {
            case 0:                     // Byte
            {
                info.Mnemonic = "andi.b";
                sbyte imm = (sbyte)ReadWord(pc); pc += 2;
                info.Args  = $"#${imm:X}, ";
                info.Args += DisassembleValue(dstMode, dstReg, 1, ref pc);
                break;
            }

            case 1:                     // Word
            {
                info.Mnemonic = "andi.w";
                short imm = ReadWord(pc); pc += 2;
                info.Args  = $"#${imm:X}, ";
                info.Args += DisassembleValue(dstMode, dstReg, 2, ref pc);
                break;
            }

            case 2:                     // Long
            {
                info.Mnemonic = "andi.l";
                int imm = ReadLong(pc); pc += 4;
                info.Args  = $"#${imm:X}, ";
                info.Args += DisassembleValue(dstMode, dstReg, 4, ref pc);
                break;
            }
            }

            info.Length = pc - info.PC;
        }
示例#2
0
        private void ORI_Disasm(DisassemblyInfo info)
        {
            int pc   = info.PC + 2;
            int size = (op >> 6) & 3;
            int mode = (op >> 3) & 7;
            int reg  = (op >> 0) & 7;

            switch (size)
            {
            case 0:                     // byte
            {
                info.Mnemonic = "ori.b";
                sbyte immed = (sbyte)ReadWord(pc); pc += 2;
                info.Args = $"#${immed:X}, {DisassembleValue(mode, reg, 1, ref pc)}";
                break;
            }

            case 1:                     // word
            {
                info.Mnemonic = "ori.w";
                short immed = ReadWord(pc); pc += 2;
                info.Args = $"#${immed:X}, {DisassembleValue(mode, reg, 2, ref pc)}";
                break;
            }

            case 2:                     // long
            {
                info.Mnemonic = "ori.l";
                int immed = ReadLong(pc); pc += 4;
                info.Args = $"#${immed:X}, {DisassembleValue(mode, reg, 4, ref pc)}";
                break;
            }
            }

            info.Length = pc - info.PC;
        }