普通操作码和操作码与MSB设置有什么区别?

时间:2011-07-24 15:25:57

标签: lua virtual-machine opcodes

普通操作码和操作码与MSB(最高有效位)设置有什么区别?

示例:

0036  5E000001           [4] return     1   2
003A  1E008000           [5] return     0   1

第一个操作码(0x5E / 1011110)设置了MSB,第二个操作码(0x1E / 0011110)没有设置。

编辑:将'byte'更正为'bit',呃。

1 个答案:

答案 0 :(得分:1)

经过一些谷歌搜索后,我找到了一个Lua源头(lopcodes.h)的标题,更好地解释了指令格式。

看起来将操作码作为一个字节读取是错误的,它应该被读为6位:

All instructions have an opcode in the first 6 bits.
Instructions can have the following fields:
`A' : 8 bits
`B' : 9 bits
`C' : 9 bits
`Bx' : 18 bits (`B' and `C' together)
`sBx' : signed Bx