Movsx в Python - PullRequest
       55

Movsx в Python

0 голосов
/ 24 февраля 2012

Я пытаюсь декомпилировать asm-код в python. Я встретил следующую строку

movsx eax, byte ptr [edi] 

Я ищу способ сделать подписанное расширение байта в Python. В настоящее время я использую bytearray для получения отдельных байтов. После получения отдельных байтов мне нужно сделать подписанное расширение для каждого из них.

1 Ответ

1 голос
/ 24 февраля 2012

Я использую следующий фрагмент:

# 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. Вы, вероятно, можете пересчитать маски для небольшого ускорения.

Ссылочный хак можно найти здесь .

...