普通操作码和设置了MSB的操作码之间有什么区别?

普通操作码和设置了它们的 MSB(最高有效位)之间的区别是什么?

示例:

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

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

编辑:更正“byte”为“bit”,傻了我。

原文链接 https://stackoverflow.com/questions/6807705

点赞
stackoverflow用户319611
stackoverflow用户319611

经过一番搜索,我发现了 Lua 源码中的一个头文件(lopcodes.h),其中对指令格式做了更好的解释。

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

所有指令的操作码都在前6位。
指令可以有以下字段:
`A' : 8 位
`B' : 9 位
`C' : 9 位
`Bx' : 18 位(`B' 和 `C' 在一起)
`sBx' : 带符号Bx
2011-07-24 16:27:33