コード例 #1
0
ファイル: M68kTextAssembler.cs プロジェクト: erenes/reko
        private void Emit_msk_a(RegisterSetOperand mask, AddressRegister aReg,
                                int size,
                                Action <RegisterSetOperand, AddressRegister> b,
                                Action <RegisterSetOperand, AddressRegister> w,
                                Action <RegisterSetOperand, AddressRegister> l)
        {
            switch (size)
            {
            case 0: b(mask, aReg); break;

            case 1: w(mask, aReg); break;

            case 2: l(mask, aReg); break;

            default: throw new InvalidOperationException();
            }
        }
コード例 #2
0
ファイル: M68kTextAssembler.cs プロジェクト: erenes/reko
        private void ProcessMovem()
        {
            int width = ExpectDataWidth();
            RegisterSetOperand mask = ExpectRegisterSet();

            Expect(TokenType.COMMA);
            var ea  = ExpectEffectiveAddress();
            var pre = ea as PredecrementMemoryOperand;

            if (pre != null)
            {
                Emit(mask, pre, width, ByteWidthIllegal, asm.Movem_w, asm.Movem_l);
            }
            else
            {
                Error("Unpexected operand {0}.", ea);
            }
        }
コード例 #3
0
ファイル: M68kAssembler.cs プロジェクト: gitter-badger/reko
 public void Movem_l(RegisterSetOperand src, PredecrementMemoryOperand dst)
 {
     constants.Add((ushort) src.BitSet);
     Emit(0x48E0 | dst.Register.Number & 7);
 }
コード例 #4
0
 public void Movem_l(RegisterSetOperand src, PredecrementMemoryOperand dst)
 {
     constants.Add((ushort)src.BitSet);
     Emit(0x48E0 | dst.Register.Number & 7);
 }