【问题标题】:convert SUM function of C language to x64 assembly language [closed]将 C 语言的 SUM 函数转换为 x64 汇编语言 [关闭]
【发布时间】:2020-04-13 12:04:51
【问题描述】:

任何人都可以帮助这种 C 编程语言转换为 x64 汇编语言 如果请,请写 x64 汇编代码作为回复。谢谢

int sum(int n, int *a){
    int s = 0;
    for (int i = 0; i < n; i++)
    s += a[i];
    return s;
}

int main(void){
    int A[] = {
        1,2,3,4,5,6,7,8,9,10
        };
    printf("sum = %d\n", sum(10, A));
    return 0;
}

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。查看常见问题解答和How to Ask
  • 解决这个问题的一种方法是查看compiler output
  • 我投票结束这个问题,因为这不是代码转换服务。

标签: c assembly


【解决方案1】:

只需编译它并使用调试器或程序集编辑器/查看器打开它。

你可以编译它使用(假设你的源文件名为main.c:

gcc main.c - o main

然后拆开它,例如objdump:

objdump -d main

或者,正如@David C. Rankin在cmets中指出的那样,您可以将其编译为程序集:

gcc -S -O2 -masm=intel -o main.asm main.c

并查看文件main.asm

https://*.com/a/5125914/10871900

【讨论】:

  • 更简单,gcc -S -O2 -masm=intel -o main.asm main.c :)