コード例 #1
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public LocalVariable(int index, IValueKind kind)
 {
     this.index = index;
     this.kind = kind;
 }
コード例 #2
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public ArgumentValue(addressMode mode)
 {
     this.mode = mode;
     this.data = new byte[0];
     substitutionType = null;
     substitutionData = 0;
     kind = ClassDatabase.nothing;
 }
コード例 #3
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public static ArgumentValue getPull(IValueKind kind)
 {
     ArgumentValue t = Pull;
     t.kind = kind;
     return t;
 }
コード例 #4
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public ArgumentValue(addressMode mode, int value, IValueKind kind)
     : this(mode, value)
 {
     this.kind = kind;
 }
コード例 #5
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public ArgumentValue(addressMode mode, substitutionType type, int? subdata, IValueKind kind)
 {
     this.mode = mode;
     substitutionType = type;
     data = new byte[4];
     if (subdata == null)
     {
         substitutionData = 0;
     }
     else
     {
         substitutionData = (int)subdata;
     }
     this.kind = kind;
 }
コード例 #6
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
 public ArgumentValue(addressMode mode, substitutionType type, IValueKind kind)
 {
     this.mode = mode;
     substitutionType = type;
     data = new byte[4];
     substitutionData = 0;
     this.kind = kind;
 }
コード例 #7
0
ファイル: Parser.cs プロジェクト: mousetail/MouseEngine
        public ArgumentValue(addressMode mode, int value)
        {
            this.mode = mode;
            this.substitutionType = null;
            this.substitutionData = 0;
            bool shorten = false; ;
            if (mode == addressMode.constint)
            {
                data = Writer.toBytes(value, true, false);
                shorten = true;
            }
            else if ((mode==addressMode.frameint) || (mode==addressMode.ramint) || (mode == addressMode.addrint))
            {
                data = Writer.toBytes(value, true, false);
                shorten = true;
            }
            else
            {
                this.data = Writer.toBytes(value);
                shorten = false;
            }

            if (shorten) {
                switch (data.Length)
                {
                    case 4:
                        break;
                    case 2:
                        this.mode = (addressMode)((int)mode - 1);
                        break;
                    case 1:
                        this.mode = (addressMode)((int)mode - 2);
                        break;
                    default:
                        throw new Errors.NumberOutOfRangeException("address mode should return a either 4,2, or 1");
                }
            }

            kind = ClassDatabase.integer;
        }