【发布时间】:2019-11-07 17:05:27
【问题描述】:
我如何使用诸如“PUSH_k x”之类的指令对任意大的 x 和 x 的字节数 k 的语言进行字节编码?
【问题讨论】:
-
不清楚你想要什么,但也许你可以将长度本身放入编码中,类似于长度前缀字符串。
-
有很多方法可以做到这一点。
-
我只需要一种方法,我一直在寻找它,但没有什么比我的问题更接近了
-
嗯,第一个在开头。您可以按顺序解码。这就是 x86 等可变长度指令集的工作方式。好的,除非您想使用更高级的编码,否则您确实需要长度字段本身的固定大小。如果您允许 32 位大小,您的示例将是
0x42 0x00 0x00 0x08 0x00 0x01 .... 0x01,即 1 字节操作码 + 4 字节长度 + 2048 字节常量。 -
你真的是指任意大吗?
k可以大于 256,所以k本身可能需要多个字节来表示?有一些可变长度的数字编码方案可以用于真正的任意值,但希望不支持立即推送。
标签: assembly bytecode biginteger machine-code