gpt4 book ai didi

c - 如何知道汇编指令是否存储在新变量中?

转载 作者:行者123 更新时间:2023-11-30 17:45:55 29 4
gpt4 key购买 nike

假设值 4 存储在寄存器“%eax”中(它的 C 变量是“varX”),值 3 存储在寄存器 %edx 中(它的 C 变量是“varY”) 。如果汇编代码是“subl %edx, %eax”,那么在 C 中我如何知道指令是否转换为

int varZ = varX - varY;

int varX = varX - varY;

如果第二种情况是正确的,那么什么汇编指令会导致第一种情况为真?

最佳答案

单独查看该指令,您可能无法确定目标是 varXvarZ 还是完全其他的东西。

int varZ = varX - varY; 这样的东西可能会编译成这样的序列(使用 Intel 而不是 AT&T 语法):

mov eax, varX
sub eax, varY
mov varZ, eax

同样,对于 varX = varX - varY;,您可能会得到如下结果:

mov eax, varX
sub eax, varY
mov varX, eax

sub 只是给出了 varXvarY 的区别。如果将结果存储到 varX,则给出 varX = ...,但如果将结果存储到 varZ,则给出varZ = ...

也有可能它在 eax 中注册了 varX,在这种情况下,sub 本身可能相当于 varX = varX - VarY;,但如果不了解该值是如何使用的,就不可能确定。

关于c - 如何知道汇编指令是否存储在新变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19486865/

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