gpt4 book ai didi

c - 从汇编语言编写 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:18 25 4
gpt4 key购买 nike

我正在尝试学习汇编语言,但我不确定自己是否在正确的轨道上。我有一个汇编语言程序,我需要将其转换为 C。

addq    %rsi, %rdi
addq %rdi, %rdx
movq %rdx, %rax
ret

尝试自己解决这个问题,我想出了一些类似的东西

long p1(long x, long y, long z)
{
x = x + y;
z = z + x;
long a = z;
return a;
}

无论我以何种方式看待它,我都觉得我很接近,但当我 objdump 时,我什么也得不到。寻找一些指导..谢谢!

最佳答案

你的 C 代码看起来不错,据我所知,它与你的汇编代码做同样的事情。

您不一定期望编译您的 C 代码会给出与示例完全相同的程序集。有许多不同的方法可以将 C 语言转换为汇编语言。

例如,如果我用 gcc -O0 编译你的 C 代码(没有优化),我得到了更长的程序集,它将所有函数参数和变量存储到堆​​栈中。这是不必要的(而且速度较慢),但会使调试器更容易。如果我用 gcc -O2 编译, 我得到

    leaq    (%rdi,%rsi), %rax
addq %rdx, %rax
ret

这里编译器巧妙地利用了 lea instruction在一条指令中执行加法和移动。

关于c - 从汇编语言编写 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497735/

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