2012-02-24 43 views
0

我想反編譯python的asm代碼。我遇到以下行在python movsx

movsx eax, byte ptr [edi] 

我正在尋找一種方法來做一個字節在Python中籤名擴展。我目前使用bytearray來獲取單個字節。獲得單個字節後,我需要爲每個字節做一個簽名擴展。

+1

我認爲有一些信息丟失。 Python沒有大小的整型數據類型,所以你不需要「簽名擴展」。如果對具有sizef整數值的數組使用'array'模塊,那麼在需要時簽名擴展將自動發生。 – 2012-02-24 16:36:12

回答

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.你或許可以預先計算口罩有點加速的。

引用的破解可以找到here