Esempio n. 1
0
        private static string CheckValues(List <string> storedValue, out string err)
        {
            err = string.Empty;
            List <string> cleanedVal = new List <string>();

            if (storedValue.Count == 0)
            {
                err = " \t- Please initialize variable." + "\r\n";
                return(string.Empty);
            }

            foreach (var sv in storedValue)
            {
                string tmp = sv;
                //if (tmp.Length > 3)
                //{
                //    if (tmp.Substring(0, 2) == "0x")
                //        tmp = sv.Remove(0, 2);
                //}

                tmp = tmp.Replace("0x", "");
                NUM_TYPES type = DataCleaner.CheckNumberType(tmp);
                if ((type == NUM_TYPES.DEC) || (type == NUM_TYPES.HEX) || (type == NUM_TYPES.BIN))
                {
                    if (sv.StartsWith("0x"))
                    {
                        cleanedVal.Add(tmp);
                    }
                    else
                    {
                        cleanedVal.Add(Converter.ConvertToHex(tmp));
                    }
                }
                else
                {
                    if (DataCleaner.IsNumType(tmp, @"\A[-]{0,1}$?[0-9]+\Z"))
                    {
                        string binValue = Converter.ConvertDecToBin(tmp);
                        binValue = binValue.Substring(binValue.Length - 32, 32);
                        cleanedVal.Add(Converter.ConvertBinToHex(binValue));
                    }
                    else
                    {
                        err = " \t- Specified an invalid value (" + tmp + ") that is neither an INT nor HEX." + "\r\n";
                    }
                }
            }
            return(string.Join(",", cleanedVal));
        }
        private static string ExtractValue(int type, string param, out string err)
        {
            err = string.Empty;
            string num;

            if (param.StartsWith("-"))
            {
                num = param;
            }
            else
            {
                num = GetNumber(param);
            }
            if ((!string.IsNullOrEmpty(num)) && (type > 0) && (Int32.Parse(num) > 32))
            {
                err += " \t- Parameter " + param + " has exceeded the maximum register count." + "\r\n";
                return(num);
            }
            else
            {
                if (type == 0)
                {
                    return("Imm_" + Converter.ConvertNumber(param));
                }

                if (type == 1)
                {
                    return(Converter.ConvertDecToBin(num));
                }

                if ((type == 2) && (param.StartsWith("-")))
                {
                    string val = Convert.ToString(Int32.Parse(num), 2);
                    num = val.Substring(val.Length - 12, 12);
                    return("Imm_" + num);
                }
                else
                {
                    if (type == 2)
                    {
                        string paramBin = Converter.ConvertDecToBin(num);
                        num = Converter.ConvertImm(GetImmediate(param));
                        if (num != "0")
                        {
                            if (DataCleaner.CheckNumberType(num) == NUM_TYPES.OTH)
                            {
                                num = GetDataAddress(dataDT, num);
                            }
                            if (DataCleaner.IsNumType(num, @"\A[0-1]+\Z"))
                            {
                                return(paramBin + "," + "Imm_" + num);
                            }
                            else
                            {
                                err += " \t- Immediate value " + num + " is neither a hexadecimal, binary or decimal." + "\r\n";
                            }
                        }
                        return(paramBin);
                    }
                }
            }
            return(string.Empty);
        }