Я пишу assembly interpreter code в C#.
Когда в Ассемблере вводят в строку DB, DW, DD (макс char символ 31), то как проверить на q(octal), b(binary), h(hexaadecimal)?
Черновик кода:
if (str[i] == "DB")
{
char[] ch = new char[31];
if ()
{
switch (chr[chr.Length - 1])
{
case 'q':
{
break;
}
case 'b':
{
break;
}
case 'h':
{
break;
}
}
}
else Console.WriteLine("Variable wrong");
}
}
Ассемблер интерпретер на С шарп очень прост. Ваш код приблизительно такой логики, можно и так. Точно такой же для dw и dd.
i++;
string[] strg = str.Split(' ');
for (int i= 0; i< strg.Length; i++)
{
if (strg[m] == "DB")
{
char[] ch = new char[31];
if (prog.ContainsKey(strg[i- 1]))
{ Console.WriteLine("Variable here"); }
else
{
if (strg[i- 1].Length <= 31)
{
ch = strg[i- 1].ToCharArray();
bool key = true;
for (int n = 0; n < ch.Length; n++)
{
if ((ch[n] == '&') || (ch[n] == '^') || (ch[n] == ' ') || (ch[n] == ';') || (ch[n] == '.') || (Char.IsDigit(ch[0]))) { key = false; }
else key = true;
}
if (key == true)
{
char[] sign = new char[strg[i+ 1].Length];
sign = strg[i+ 1].ToCharArray();
switch (sign[sign.Length - 1])
{
case 'q':
{
q = true;
int temp = Convert.ToInt32(strg[i+ 1].Substring(0, strg[i+ 1].Length - 1), 8);
strg[i+ 1] = Convert.ToString(temp);
prog.Add(String.Format(strg[i- 1]), Convert.ToString(strg[i+ 1]));
Console.WriteLine(prog[strg[i- 1]]);
break;
}
case 'b':
{
b = true;
int temp = Convert.ToInt32(strg[i+ 1].Substring(0, strg[i+ 1].Length - 1), 2);
strg[i+ 1] = Convert.ToString(temp);
prog.Add(String.Format(strg[i- 1]), Convert.ToString(strg[i+ 1]));
Console.WriteLine(prog[strg[i- 1]]);
break;
}
case 'h':
{
h = true;
int temp = Convert.ToInt32(strg[i+ 1].Substring(0, strg[i+ 1].Length - 1), 16);
strg[i+ 1] = Convert.ToString(temp);
prog.Add(String.Format(strg[i- 1]), Convert.ToString(strg[i+ 1]));
Console.WriteLine(prog[strg[i- 1]]);
break;
}
default:
{
prog.Add(String.Format(strg[i- 1]), Convert.ToString(strg[i+ 1]));
Console.WriteLine(prog[strg[i- 1]]);
break;
}
}
}
else Console.WriteLine("Variable is wrong");
}
else
{
Console.WriteLine("variable out of range{0} ", strg[i- 1]);
}
}
}
else if (strg[m] == "DW")
{
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Слышал что не рекомендуется использовать оператор new где попалоЕго необходимо изолировать в отдельном классе который будет отвечать за создания...
Возможно ли сделать свойство-расширение для класса? Например у меня есть такой метод-расширение:
Среда Visual Studio 2017Изучаю CUDA программирование, делаю по этому уроку https://www
На данном сайте посоветовали использовать библиотеку MahAppsMetro для удобного преобразования стиля и цвета окна