Ejemplo n.º 1
0
        public override AddressingMode GetAddressingMode(AstScope scope)
        {
            var lhsMode = LHS.GetAddressingMode(scope);
            var rhsMode = RHS.GetAddressingMode(scope);

            if (lhsMode == AddressingMode.Immediate && rhsMode == AddressingMode.Immediate)
            {
                return(AddressingMode.Immediate);
            }

            if (lhsMode == AddressingMode.Immediate && rhsMode == AddressingMode.Register)
            {
                return(AddressingMode.RegisterPlusImmediate);
            }

            if (lhsMode == AddressingMode.Register && rhsMode == AddressingMode.Immediate)
            {
                return(AddressingMode.RegisterPlusImmediate);
            }

            if (lhsMode == AddressingMode.Immediate && rhsMode == AddressingMode.RegisterPlusImmediate)
            {
                return(AddressingMode.RegisterPlusImmediate);
            }

            if (lhsMode == AddressingMode.RegisterPlusImmediate && rhsMode == AddressingMode.Immediate)
            {
                return(AddressingMode.RegisterPlusImmediate);
            }

            return(AddressingMode.Invalid);
        }
Ejemplo n.º 2
0
        public override long GetImmediateValue(AstScope scope)
        {
            var lhsMode = LHS.GetAddressingMode(scope);
            var rhsMode = RHS.GetAddressingMode(scope);

            long val = 0;

            if ((lhsMode & AddressingMode.Immediate) != 0)
            {
                val += LHS.GetImmediateValue(scope);
            }
            if ((rhsMode & AddressingMode.Immediate) != 0)
            {
                val += RHS.GetImmediateValue(scope);
            }

            return(val);
        }