Example #1
0
 public AdressModeBase(addressMode mode, int numBytes, AddressModeOutputFunction outputF, AddressModeInputFunction inputF)
 {
     this.mode = mode;
     this.numBytes = numBytes;
     this.inputF = inputF;
     this.outputF = outputF;
 }
Example #2
0
 public ArgumentValue(addressMode mode)
 {
     this.mode = mode;
     this.data = new byte[0];
     substitutionType = null;
     substitutionData = 0;
     kind = ClassDatabase.nothing;
 }
Example #3
0
 public ArgumentValue(addressMode mode, int value, IValueKind kind)
     : this(mode, value)
 {
     this.kind = kind;
 }
Example #4
0
 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;
 }
Example #5
0
 public ArgumentValue(addressMode mode, substitutionType type, IValueKind kind)
 {
     this.mode = mode;
     substitutionType = type;
     data = new byte[4];
     substitutionData = 0;
     this.kind = kind;
 }
Example #6
0
        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;
        }