字符串如何嵌入二进制文件中?

时间:2009-09-19 05:09:07

标签: string virtual-machine bytecode embedding

我正在编写自己的字节码和虚拟机(在.NET上),我无法弄清楚的一件事是如何将字符串嵌入到我的字节码中。现在有什么想法我应该怎么做?

2 个答案:

答案 0 :(得分:1)

显然,您正在定义自己的字节代码。这与.NET CIL的语法/语法无关,对吧?

如果是这样,如果您关注的是如何编码字符串(而不是其他指令,如跳转,循环等),您可以为它创建自己的“指令”。

例如,十六进制代码“01xx”可以用于包含xx字节(0-255)的字符串。然后,您的语言解释器将被教导将此字符串存储在堆栈(或任何地方)上,然后移动以解码位于字节码流下方xx字节的后续字节代码。

如果您关心的是如何在字节码的任何存储中混合字符数据和数字数据,请提供具体信息,也许有人可以提供帮助......

答案 1 :(得分:0)

如果可以在数组中存储数字,则可以将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

也许reference on character arrays as strings会有帮助吗?