Exemplo n.º 1
0
        public void Operate(ref HomeworkWPF.Core CurrentStatement, string parametrs)
        {
            if (parametrs != "")
              {
            string source = parametrs.Trim();

            HomeworkWPF.StackItem item = CurrentStatement.Pop();
            int value = item.Data;

            /*Проверка:  операнд -- регистр, то помещаем значение в регистр,
             иначе ошибка.*/
            int ifSourceHasCount = source.IndexOfAny(new char[] { '1','2','3','4','5',
                                                '6','7','8','9','0'});
            if (ifSourceHasCount == -1)
            {
              if (source.Length == 3 && source[0] == 'e' && source[2] == 'x')
              {
            for (char c = 'a'; c < 'i'; c++)
            {
              if (source[1] == c)
              {
                /*Помещаем значение в регистр*/
                CurrentStatement.SetRegister(source, value);
                return;
              }
            }
              }
            }
              }
              else
              {
            throw new HomeworkWPF.ParseCommandException(CurrentStatement.Commands[CurrentStatement.CurrentCommand]);
              }
        }
Exemplo n.º 2
0
        /*Операция*/
        public void Operate(ref HomeworkWPF.Core CurrentStatement, string parametrs)
        {
            if (parametrs == "")
              {
            int address = 0;

            HomeworkWPF.StackItem item = null;

            int count = 0;

            /*Ищем в стеке адрес возврата.*/
            while (address == 0 && CurrentStatement.MicroStack.Count > 0)
            {
              item = CurrentStatement.Pop();
              if (item.Address == true)
              {
            address = item.Data;
              }
            }

            /*Переходим по адресу. Меняем индекс обрабатываемой команды.*/
            foreach (HomeworkWPF.CommandItem i in CurrentStatement.Commands)
            {
              if (i.Address == address)
              {
            CurrentStatement.CurrentCommand = count;
            return;
              }
              count++;
            }
              }
              throw new HomeworkWPF.ParseCommandException(CurrentStatement.Commands[CurrentStatement.CurrentCommand]);
        }