Frage

Ich bin meine eigene Bytecode und virtuelle Maschine zu schreiben (auf .NET) und eine Sache, die ich nicht herausfinden kann, ist, wie Strings in meine Bytecode einzubetten. Irgendwelche Ideen jetzt, wie ich es tun sollte?

War es hilfreich?

Lösung

Anscheinend sind definieren Sie Ihren ganz eigenen Byte-Code. das hat nichts mit der Syntax / Grammatik von .NET CIL zu tun, nicht wahr?

Wenn ja, und wenn Sie Sorge ist, wie Strings zu codieren (im Gegensatz zu anderen Anweisungen wie Sprünge, Schleifen, etc.), können Sie einfach Ihre eigene „Anweisung“ erfinden dafür.

Zum Beispiel Hex-Code "01xx" für eine Zeichenfolge sein könnte enthält xx Bytes (0 -255). Ihre Sprache Dolmetscher würden dann gelehrt werden, um diese Zeichenfolge zu speichern, auf dem Stapel (oder wo auch immer) und bewegen Sie den folgenden Bytecode befand xx Bytes weiter unten auf dem Bytecode-Stream zu dekodieren.

Wenn Sie Sorge ist, wie Zeichendaten zu mischen und numerische Daten in welcher Speicher, den Sie für den Bytecode haben, bitte Besonderheiten bieten und vielleicht kann jemand helfen ...

Andere Tipps

Wenn Sie Zahlen in einem Array speichern können, dann können Sie ASCII-Daten im gleichen Array speichern. Das Ignorieren die Idee einer Zeichenfolge als Klasse ist ein einfacher String nur ein Zeichenfeld sowieso - und in C, ein Byte mit einem Wert von 0 zeigt das Ende der Zeichenfolge

.

Als einfaches Proof-of-concept in C:

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

Ausgabe:

$ ./a.out
hello

Vielleicht ein Bezug auf Zeichen-Arrays als Strings würde helfen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top