gpt4 book ai didi

assembly - 一个32位寄存器和一个常量的指令怎么可能只占用三个字节呢?

转载 作者:行者123 更新时间:2023-12-01 23:05:59 25 4
gpt4 key购买 nike

我正在审查 Visual Studio 2012 中某些程序的反汇编,并看到以下内容:

65F920F3  or          eax, 0FFFFFFFFh  
65F920F6 jmp 65F92157

注意。它占用地址 F3-F5,这意味着它只占用三个字节。 eax 寄存器是四个字节,所以我假设常量 0FFFFFFFFh 也是四个字节。

这条指令如何放入三个字节?

最佳答案

因为常量 0xFFFFFFFF aka -1 适合带符号字节,所以它可以使用带符号字节的编码作为立即操作数。

原来如此

83 C8 FF

83aluop rm32, imm8 的通用操作码,ModRM 字节 C8 具有组件 11_001_000其中 11 表示 rm 部分是寄存器,001 是/r 字段并将指令转换为 000 表示 rm 操作数是 eaxFF 是 imm8。

关于assembly - 一个32位寄存器和一个常量的指令怎么可能只占用三个字节呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28429655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com