gpt4 book ai didi

assembly - 编码 ADC EAX、ECX - 2 种不同的编码方式? (拱形 x86)

转载 作者:行者123 更新时间:2023-12-04 04:20:04 26 4
gpt4 key购买 nike

我正在查看英特尔指令集手册,看起来有两种不同形式的 ADC将匹配/编码 ADC EAX, ECX如下:

ADC r/m32, r32  (11 /r , which encodes to 11C8)

或者
ADC r32, r/m32  (13 /r, which encodes to 13C1)

我的问题是(假设我计算正确)是 11C813C1相等的?汇编程序在选择一种编码而不是另一种编码时会考虑哪些因素?问题是从实现汇编程序的角度来看的,所以问题是一般性的,而不是关于这个特定的假设指令。

如果这是一个冗长的答案,请指出我正确的方向,因为我尝试使用谷歌搜索它失败了。

最佳答案

这是 redundancy指令编码。任何在指令中使用多个参数的架构都有这个。

想想具有 add rx, ry, rz 的 RISC 架构将 ry 和 rz 的总和分配给 rx 然后你可以编码 add rx, ry, rzadd rx, rz, ry ,它们都是等价的。

在 x86 中,我们(通常)每条指令只有 2 个参数,但您可以选择它们之间的方向,因为您可以存储到内存或从内存中读取。如果你不使用内存那么你可以在2个寄存器之间选择方向,所以有2种编码方式

您可以使用它来识别一些编译器/汇编器。对于某些汇编程序,您可以选择要使用的编码。在 GAS 中,您可以使用 .s suffix强制它发出备用编码

10 de   adcb   %bl,%dh
12 f3 adcb.s %bl,%dh

关于assembly - 编码 ADC EAX、ECX - 2 种不同的编码方式? (拱形 x86),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22217436/

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