在python中的movsx

时间:2012-02-24 15:41:47

标签: python assembly signed

我正在尝试将asm代码反编译为python。我遇到了以下一行

movsx eax, byte ptr [edi] 

我正在寻找一种在python中对一个字节进行有符号扩展的方法。我目前正在使用bytearray来获取单个字节。获取单个字节后,我需要为每个字节执行签名扩展。

1 个答案:

答案 0 :(得分:1)

我使用以下代码段:

# sign extend b low bits in x
# from "Bit Twiddling Hacks"
def SIGNEXT(x, b):
  m = 1 << (b - 1)
  x = x & ((1 << b) - 1)
  return (x ^ m) - m

在你的情况下,b将是8.你可以预先计算掩码以获得一点加速。

可以找到引用的hack here