在 x86_64 ASM 中,以下指令分别执行按位左移和右移。SHL rax, clSHR rax, cl我想用 Python 模拟这些指令。对于诸如:0x613025F862 之类的值,我可以执行以下操作:result = 0x613025F862 << 0x10但是,对于较大的值,我得到不同的结果:0x60018DDDBD500063 << 0x10它给我的结果为:0x60018dddbd5000630000。但是,在 ASM 中,结果将是:0x8dddbd5000630000我可以通过执行以下操作在 Python 中获得上述结果:(0x60018DDDBD500063 << 0x10) & 0xffffffffffffffff现在,我如何编写一个有效的通用函数来给出正确的结果?为此,我编写了如下所示的函数:def shift_left(input): result = input << 0x10 if result > 0xffffffffffffffff: result = result & 0xffffffffffffffff else: result = result return result谢谢。
添加回答
举报
0/150
提交
取消