Как строки встраиваются в двоичные файлы? - PullRequest
0 голосов
/ 19 сентября 2009

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

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

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

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

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

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

0 голосов
/ 19 сентября 2009

Если вы можете хранить числа в массиве, то вы можете хранить данные 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

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

...