Question

Je suis en train d'écrire mon propre bytecode et la machine virtuelle (sur .NET) et une chose que je ne peux pas comprendre est comment intégrer les chaînes dans mon bytecode. Toutes les idées maintenant comment je devrais le faire?

Était-ce utile?

La solution

Il semble que vous définissez votre propre code d'octets. cela n'a rien à voir avec la syntaxe / grammaire de CIL .NET, droit?

Si oui, et si vous souci est comment coder des chaînes (par opposition à d'autres instructions telles que des sauts, des boucles, etc.), vous pouvez simplement inventer votre propre « instruction » pour elle.

Par exemple, le code hexadécimal de "01xx" pourrait être une chaîne contenant xx octets (0 -255). Votre interprète en langue serait alors appris à stocker cette chaîne sur la pile (ou whereever) et passer à décoder le code octet suivant situé xx octets plus bas le flux de bytecode.

Si vous le souci est comment mélanger des données de caractères et des données numériques quel que soit le stockage que vous avez pour le bytecode, s'il vous plaît fournir des détails et peut-être quelqu'un peut aider ...

Autres conseils

Si vous pouvez enregistrer des numéros dans un tableau, vous pouvez stocker des données ASCII dans le même tableau. Ignorant l'idée d'une chaîne comme une classe, une chaîne simple est juste un tableau de caractères de toute façon - et C, un octet avec une valeur de 0 indique la fin de la chaîne

.

En tant que simple preuve de concept en C:

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

Sortie:

$ ./a.out
hello

Peut-être un sur les tableaux de caractères sous forme de chaînes pourrait aider?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top