gpt4 book ai didi

assembly - 有没有办法在 32 位寄存器指令中保留字大小的立即数

转载 作者:行者123 更新时间:2023-12-02 19:36:19 24 4
gpt4 key购买 nike

假设以下 x86-32 指令:

add ebx,1

(至少)有两种方法来组装此操作码:

81 c3 01 00 00 00

83 c3 01

第一个将 1 保留为 4 字节双字第二个保留 1 作为一个字节

是否有一条指令将1保留为2个字节?如果没有为什么?

最佳答案

您偶然发现了 x86 指令集的一个怪癖。 Intel 在词干 83 下包含了一组指令,其第一个操作数的类型为 Ev,第二个操作数是立即数字节,其大小被解释为与Ev 操作数。因此,对于 83 c3 0101 被解释为 32 位值;对于 66 83 c3 01,01 被解释为 16 位值(目标是 16 位 ax 寄存器)。在词干 6A 下编码的 push 助记符在其单个操作数的大小方面具有相同的行为方式。

您的问题的更广泛的答案是否定的,不存在将 16 位常量解释为 32 位常量的编码。

来源:我写了一个反汇编程序。

关于assembly - 有没有办法在 32 位寄存器指令中保留字大小的立即数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17379499/

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