我正在编写自己的字节码和虚拟机(在.NET上),我无法弄清楚的一件事是如何将字符串嵌入到字节码中。任何想法现在我应该怎么做?如何将字符串嵌入到二进制文件中?
回答
显然你正在定义你自己的字节码。这与.NET CIL的语法/语法无关,对吧?
如果是这样,并且您关心的是如何对字符串进行编码(而不是其他指令,如跳转,循环等),那么您可以为它创建自己的“指令”。
例如,十六进制代码“01xx”可以用于包含xx个字节(0 -255)的字符串。然后,您的语言解释器将被教导将该字符串存储在堆栈(或无论哪个)上,并移动以解码位于字节码流下方xx字节的以下字节码。
如果你关心的是如何在你对字节码的任何存储混合字符数据和数字数据,请提供具体细节,也许有人可以帮助...
正确,我正在做我自己的。 我有点得到你说的,但ieach指令在我的字节码中包含4个独立的字节(操作码和其他3个字符,其用途因指令而异),我想避免变长说明。它可以安全地通过在指令本身中编码数据的长度来实现,但它会使它更复杂... – RCIX 2009-09-19 05:39:18
我看到了具有固定长度和格式的字节码的优点。在这种情况下,字符串可能只是作为变量声明(您可能很容易设计)的指令来实现的,其中存储实际字符串的索引(即地址,偏移量,下标...)。与常规变量的不同之处在于,字符串所在的存储区使用字符串值进行初始化。事实上,对于3字节的指令,你可能会发现自己受限于其他类型而不仅仅是字符串(比如说如何编码一个大于8百万的数字值? – mjv 2009-09-19 05:51:35
这是另一件我有点困惑的事情......但我可能只是继续做,谢谢! – RCIX 2009-09-21 05:47:15
如果你可以在一个阵列存储号码,然后您可以将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
这不是那么简单,我试图嵌入字符串与其他字节(这正好是我自己的自定义格式的说明),我不知道如何做到这一点。 – RCIX 2009-09-19 05:52:58
- 1. 如何使用Python3将二进制文件写入字符串?
- 2. 如何将字符串作为二进制文件写入文件?
- 3. 字符串到二进制[]
- 4. 如何将二进制文件的内容读入Clojure中的字符串?
- 5. 将二进制字符串写入文件
- 6. Swift 3将字符串写入二进制文件
- 7. 字符串写入到二进制文件用C
- 8. 将二进制数据(例如二进制文件)导出为.NET字符串?
- 9. 二进制文件字符串
- 10. Postgres mogrify将二进制文件添加到SQL字符串
- 11. 从字符串中输入DynamoDB中的二进制文件
- 12. Python读取二进制文件中的二进制数据到字符串?
- 13. 如何将二进制数据复制到字符串流
- 14. 写的字符串二进制数据的二进制文件
- 15. 将二进制视频数据嵌入到swf文件中
- 16. 十六进制字符串到二进制字符串
- 17. Ruby:十六进制字符串到二进制字符串
- 18. 将文件和字符串编码为二进制文件C#
- 19. 如何设置二进制文件中的字符串指针?
- 20. 将二进制字符串转换为文本字符串
- 21. 将字符串视为Ruby中的二进制文件
- 22. Go - 如何将二进制字符串转换为二进制字节?
- 23. Ruby - 如何将二进制字符串解压缩到普通字符串?
- 24. 如何将\ 0插入到C中的二进制文件中
- 25. 如何将版本信息嵌入到Windows二进制文件中?
- 26. 如何将二进制转换为字符或字符串?,Java
- 27. Java |二进制字符串到字节
- 28. 加入两个二进制字符串
- 29. 将二进制图像数据复制到字符串中
- 30. 写入无符号字符向量到二进制文件C++
它在Java中称为字节码。在.NET中,它是CIL,所以我更新了你的标签。你有没有咨询CIL参考? – 2009-09-19 05:11:17
不,我在.net平台上编写一个程序,该程序将字节数组解释为我自己的字节码自定义风格。 – RCIX 2009-09-19 05:12:41
我想不出的是如何将数字以外的任何东西嵌入到数组中。 – RCIX 2009-09-19 05:14:19