在C中编码指令

时间:2016-03-09 22:55:43

标签: c encoding instructions

这个概念很新,而且我一直在引用其他指令集,但我一直在尝试创建一个虚拟机来实际编码指令。

这就是我所拥有的:

ua.example.com

基本上我有一个指令,它有一个1字节的操作码,一个1字节的目标和一个8字节的立即值。因此,例如,假设mov的操作码为0,并且A寄存器为0,将值50移动到的enum OPCODE { MOV, }; enum TARGET { A, B, }; struct instr { unsigned char opcode; unsigned char target; uint64_t immediate; }; 移动指令将为0,0,50。

我如何将其编码为单个值?该指令加起来是一个80位/ 10字节的值,据我所知,它不是C中的本机类型。我会使用什么类型,并存储这个,我可以使用一个联合将它们全部压缩成一个值?

......我正在接近这个吗?

1 个答案:

答案 0 :(得分:0)

您可以将其编码为struct instr类型的单个值:

struct instr a = { ... };

变量a是一个值,您可以将其分配给struct instr类型的其他变量,在调用函数时传递(按值),用作函数调用的返回值等。 struct instr类型的值类似于内置类型(intlong等)。