Как строки встраиваются в двоичные файлы?
-
11-09-2019 - |
Вопрос
Я пишу свой собственный байт-код и виртуальную машину (на .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
Может быть, а ссылка на символьные массивы в виде строк помогло бы?