Вопрос

Я пишу свой собственный байт-код и виртуальную машину (на .NET), и одна вещь, которую я не могу понять, - это как встраивать строки в мой байт-код.Теперь есть какие-нибудь идеи, как мне это сделать?

Это было полезно?

Решение

Очевидно, вы определяете свой собственный байтовый код.это не имеет ничего общего с синтаксисом / грамматикой .NET CIL, верно?

Если это так, и если вас интересует, как кодировать строки (в отличие от других инструкций, таких как переходы, циклы и т.д.), вы можете просто придумать для этого свою собственную "инструкцию".

Например, шестнадцатеричный код "01xx" может быть для строки, содержащей xx байт (0 -255).Затем ваш языковой интерпретатор будет обучен сохранять эту строку в стеке (или где бы то ни было) и переходить к декодированию следующего байтового кода, расположенного на xx байт дальше по потоку байт-кода.

Если вас беспокоит, как смешивать символьные данные и числовые данные в любом хранилище, которое у вас есть для байт-кода, пожалуйста, укажите подробности, и, возможно, кто-нибудь сможет помочь...

Другие советы

Если вы можете хранить числа в массиве, то вы можете хранить данные ASCII в том же массиве.Игнорируя идею строки как класса, простая строка в любом случае является всего лишь массивом символов, а в C байт со значением 0 указывает на конец строки.

Как простое доказательство концепции на C:

int main()
{
    putchar(104); // h
    putchar(101); // e
    putchar(108); // l
    putchar(108); // l
    putchar(111); // o
    putchar(10);  // \n
    return 0;
}

Выходной сигнал:

$ ./a.out
hello

Может быть, а ссылка на символьные массивы в виде строк помогло бы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top