コード例 #1
0
ファイル: FrameResource.cs プロジェクト: Rohansi/LoonyC
        public RegisterFrameResource(Frame frame, TypeBase type, Register register)
            : base(frame, type)
        {
            Register = register;

            if (type is PointerType)
            {
                _type = OperandValueType.Dword;
            }
            else
            {
                var typePrim = type as PrimitiveType;
                if (typePrim == null)
                    throw new ArgumentException("Type must be a primitive.", nameof(type));

                switch (typePrim.Type)
                {
                    case Primitive.Int:
                        _type = OperandValueType.Dword;
                        break;
                    case Primitive.Short:
                        _type = OperandValueType.Word;
                        break;
                    case Primitive.Char:
                        _type = OperandValueType.Byte;
                        break;
                    default:
                        throw new NotSupportedException();
                }
            }
        }
コード例 #2
0
ファイル: Operand.cs プロジェクト: Rohansi/LoonyC
 protected AutoSizedOperand(OperandType type,
                            OperandValueType valueType = OperandValueType.Dword,
                            bool isPointer = false,
                            bool isOffset = false,
                            Register offsetRegister = Register.R0,
                            int payload = 0)
     : base(type, valueType, isPointer, isOffset, offsetRegister, payload)
 {
 }
コード例 #3
0
        protected AutoSizedOperand(OperandType type,
                                   OperandValueType valueType = OperandValueType.Dword,
                                   bool isPointer             = false,
                                   bool isOffset           = false,
                                   Register offsetRegister = Register.R0,
                                   int payload             = 0)

            : base(type, valueType, isPointer, isOffset, offsetRegister, payload)
        {
        }
コード例 #4
0
 protected Operand(OperandType type,
                   OperandValueType valueType = OperandValueType.Dword,
                   bool isPointer             = false,
                   bool isOffset           = false,
                   Register offsetRegister = Register.R0,
                   int payload             = 0)
 {
     Type           = type;
     ValueType      = valueType;
     IsPointer      = isPointer;
     IsOffset       = isOffset;
     OffsetRegister = offsetRegister;
     Payload        = payload;
 }
コード例 #5
0
ファイル: Operand.cs プロジェクト: Rohansi/LoonyC
 protected Operand(OperandType type,
                   OperandValueType valueType = OperandValueType.Dword,
                   bool isPointer = false,
                   bool isOffset = false,
                   Register offsetRegister = Register.R0,
                   int payload = 0)
 {
     Type = type;
     ValueType = valueType;
     IsPointer = isPointer;
     IsOffset = isOffset;
     OffsetRegister = offsetRegister;
     Payload = payload;
 }
コード例 #6
0
ファイル: FrameResource.cs プロジェクト: Rohansi/LoonyC
        public RegisterFrameResource(Frame frame, TypeBase type, Register register)
            : base(frame, type)
        {
            Register = register;

            if (type is PointerType)
            {
                _type = OperandValueType.Dword;
            }
            else
            {
                var typePrim = type as PrimitiveType;
                if (typePrim == null)
                {
                    throw new ArgumentException("Type must be a primitive.", nameof(type));
                }

                switch (typePrim.Type)
                {
                case Primitive.Int:
                    _type = OperandValueType.Dword;
                    break;

                case Primitive.Short:
                    _type = OperandValueType.Word;
                    break;

                case Primitive.Char:
                    _type = OperandValueType.Byte;
                    break;

                default:
                    throw new NotSupportedException();
                }
            }
        }
コード例 #7
0
ファイル: FrameOperand.cs プロジェクト: Rohansi/LoonyC
 public FrameOperand(OperandValueType type, int offset)
     : base(OperandType.ImmD, type, true, true, Register.BP, offset)
 {
 }
コード例 #8
0
ファイル: FrameOperand.cs プロジェクト: Rohansi/LoonyC
 public FrameOperand(OperandValueType type, Register offset)
     : base((OperandType)offset, type, true, true, Register.BP)
 {
 }
コード例 #9
0
 public RegisterOperand(Register register, OperandValueType type = OperandValueType.Dword)
     : base((OperandType)register, type)
 {
 }
コード例 #10
0
ファイル: RegisterOperand.cs プロジェクト: Rohansi/LoonyC
 public RegisterOperand(Register register, OperandValueType type = OperandValueType.Dword)
     : base((OperandType)register, type)
 {
 }
コード例 #11
0
 public FrameOperand(OperandValueType type, Register offset)
     : base((OperandType)offset, type, true, true, Register.BP)
 {
 }
コード例 #12
0
 public FrameOperand(OperandValueType type, int offset)
     : base(OperandType.ImmD, type, true, true, Register.BP, offset)
 {
 }