gpt4 book ai didi

c - 将递归 C 程序转换为 LEGv8 汇编

转载 作者:行者123 更新时间:2023-11-30 19:35:38 28 4
gpt4 key购买 nike

需要帮助将此 C 代码转换为 LEGv8 汇编。 (作业)

unsigned long long f(unsigned long long a[], int n) {
if (n == 0) return a[n];
return a[n] + f(a, n - 1);
}

我对在 LEGv8 汇编中编写基本函数有点熟悉,但递归方面让我感到困惑。

提前谢谢您。

最佳答案

由于您的任务是执行编译器所做的事情(将 C 翻译为汇编),因此您不需要知道这是递归的。 C 编译器也不知道。

要确定源是否使用递归是恕我直言的NP完全问题,就像确定代码是否包含无限循环和其他NP完全任务一样,因此编译器甚至懒得尝试评估此类属性,他们当然可以在没有这些信息的情况下编译类似的代码。

尽管在这种简单的情况下他们可能会注意到,并且可能通过展开一些调用或将相当小的输入评估为常数来优化这一点,但这个是翻译为 for 循环的良好候选者对数组 an 个元素求和,但这又与您无关。

因此,如果只有递归让您感到困惑,那么忘记这是递归,只需将其按原样逐行、逐条指令编译为汇编语言。

关于c - 将递归 C 程序转换为 LEGv8 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407733/

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