Linux 累加计算递归算法汇编实现

devtools/2024/10/20 13:42:50/

1+...+n可以使用公式计算,同时也是递归实现的很好例子,其c实现代码为

int f(int i)
{i && (i+f(i-1));return i;
}

其终止条件为0,此时i && (i+f(i-1))表达式不成立,不计算i+f(i-1)直接返回0,调用栈开始回溯,至于为什么使用0作为终止条件,纯粹是保持代码简洁,参照这个思路,汇编代码如下

#include <stdio.h>asm(".global f\n\t""f:\n\t""pushq %rbp\n\t""mov %rsp, %rbp\n\t""sub $8, %rsp\n\t""movl %edi, -0x4(%rbp)\n\t""cmpl $1, %edi\n\t""je out\n\t""mov -4(%rbp), %eax\n\t""sub $1, %eax\n\t""mov %eax, %edi\n\t""call f\n\t""add %eax, -4(%rbp)\n\t""out:\n\t""movl -4(%rbp), %eax\n\t""leaveq\n\t""retq");int main()
{printf("%d\n", f(100));return 0;
}

使用gcc直接编译


http://www.ppmy.cn/devtools/127299.html

相关文章

mongoDB基础知识

文章目录 为什么使用mongoDB&#xff1f;数据模型 想了解什么mongoDB首先我们得先知道什么事“三高”&#xff1f;三高什么呐&#xff1f;具体的应用场景&#xff1f;在这些应用场景中&#xff0c;数据操作方面共同特点是&#xff1a; 什么时候选择mongoDB&#xff1f;mySQL和m…

SpringBoot民宿预订系统设计与实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

工具:Git分布式版本控制系统

文章目录 介绍分布式版本控制系统原理git安装和使用git软件分类安装软件注册开源社区githubgit ssh key 配置远程仓库分支管理标签管理 引用 介绍 分布式版本控制系统下的每一台终端都可以充当类似集中式版本控制系统的中央服务器。每台终端都可以保存版本库&#xff0c;并且版…

【OSCP Proving Grounds 靶场系列】Slort

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

第二章 时间服务器

NTP 是网络时间协议&#xff08;Network Time Protocol&#xff09;的简称&#xff0c;通过 udp 123 端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&#xff09;同步&#xff0…

JavaWeb合集08-项目开发实战

八、项目开发 1、项目搭建 1.1 配置配置文件 application.properties文件 spring.application.namemybatis_testspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/homepage spring.datasource.usernameroot sp…

【报错处理】MR/Spark 使用 BulkLoad 方式传输到 HBase 发生报错: NullPointerException

博主希望能够得到大家的点赞收藏支持&#xff01;非常感谢 点赞&#xff0c;收藏是情分&#xff0c;不点是本分。祝你身体健康&#xff0c;事事顺心&#xff01; Spark 通过 BulkLoad 方式传输到 HBase&#xff0c;我发现会出现空指针异常。简单写下如何解决的。 原理&#xf…

ubuntu2404下搭建Odoo18开发环境

Odoo在windows下也可以开发&#xff0c;不过执行速度比较慢&#xff0c;经过我测试&#xff0c;重启一下服务&#xff0c;windows下需要十几秒甚至几十秒&#xff0c;而mac或者ubuntu只需要几秒钟。 另外&#xff0c;官方推荐的生产环境也是ubuntu&#xff0c;所以&#xff0c…