我正在尝试将asm代码反编译为python。我遇到了以下一行
movsx eax, byte ptr [edi]
我正在寻找一种在python中对一个字节进行有符号扩展的方法。我目前正在使用bytearray来获取单个字节。获取单个字节后,我需要为每个字节执行签名扩展。
答案 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。