gpt4 book ai didi

c - 指令在虚拟机中的表示

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:53 24 4
gpt4 key购买 nike

我正在用 C 实现一个 VM(这是我的第一个),为了与平台无关,我设置每条指令在二进制输入(即字节码文件)中占用 4 个字节。

我的问题是:当前关于指令表示的做法是什么?

是不是简单的设置unsigned char[4]来表示每条指令?或者,使用您喜欢的任何表示,前提是您可以将这些 4 字节指令转换成它?

提前致谢。

最佳答案

我主要使用简单且“经典”的基于堆栈的 VM,其中字节码就是字节。所有内容都存储为大型 unsigned char 数组,这也是我写入文件/从文件读取的内容。

我通过始终按特定顺序写入和读取操作数来克服字节顺序之类的问题。执行四个字节大小的读取以获得 32 位整数要慢一些,但我不必像使用强制转换读取单个 int 时那样担心字节顺序。

另一种不用担心字节顺序的方法是在手册中简单地清楚地说明字节顺序是什么,以及尝试在具有另一种字节顺序的系统上运行二进制文件会导致奇怪的错误。然后你可以使用一个数组,例如int32_t 而不是存储指令和操作数。如果这是字节码中的最小单位,它可能会大大简化您的编码。

关于c - 指令在虚拟机中的表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com