gpt4 book ai didi

cmp je/jg 他们如何在汇编中工作

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:47 26 4
gpt4 key购买 nike

我想了解 cmp 和 je/jg 在汇编中是如何工作的。我在谷歌上看到了几个例子,但我还是有点困惑。下面我展示了我试图转换为 C 语言的汇编代码的一部分以及相应的 C 代码。它是以正确的方式实现的还是我对 cmp 的工作原理有错误的理解?

cmp    $0x3,%eax
je A
cmp $0x3,%eax
jg B
cmp $0x1,%eax
je C


int func(int x){


if(x == 3)
goto A;

if (x >3)
goto B;


if(x == 1)
goto C;

A:
......

B:
......

C:
......

最佳答案

您正确理解了 cmp 和 je/jg 的工作原理,但是您的 C 代码中存在错误。这一行:

if (*x == 1)

应该是

if (x == 1)

Here是 x86 控制流指令的一个很好的总结。

此外,没有理由为相同的值重复 cmp 指令。执行后,您可以通过多种方式测试结果,而无需重复比较。所以你的汇编代码应该是这样的:

cmp    $0x3,%eax
je A
jg B
cmp $0x1,%eax
je C

关于cmp je/jg 他们如何在汇编中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665289/

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