当前位置: 首页 > news >正文

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

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.lryc.cn/news/464251.html

相关文章:

  • 明日周刊-第23期
  • kubernets(二)
  • 《YOLO 标注工具全览》
  • 财富思维学习
  • python爬虫加解密分析及实现
  • 用Java做智能客服,基于私有知识库
  • 软考(网工)——网络安全
  • 如何给手机换ip地址
  • kafkamanager安装
  • 笔记本电脑U口保护分享
  • OpenCV高级图形用户界面(20)更改窗口的标题函数setWindowTitle()的使用
  • 结构体指针的初始化以及结构体变量作为函数实参传递时易混淆的知识点
  • Github 2024-10-20 php开源项目日报Top10
  • C++ 算法学习——1.3 双向深度优先搜索
  • Artistic Oil Paint 艺术油画着色器插件
  • 记一次left join联表查询的索引失效场景
  • 从零到一:前端开发者学习 Cocos Creator 的全攻略
  • JavaWeb 19 AJAX
  • element plus中menu菜单技巧
  • 数据结构-贪心算法笔记
  • 基于SpringBoot的在线汽车票预订平台
  • ubuntu 安装nginx
  • fanuc远程PNS启动
  • 使用 Spring 框架构建 MVC 应用程序:初学者教程
  • 集成Spring Security详解
  • Kettle9.4支持Clickhouse数据源插件开发以及性能测试
  • 微信支付V3 yansongda/pay 踩坑记录
  • AndroidStudio实验报告——实验一、二
  • Nginx超简洁知识:负载均衡-反向代理,动静分离,配置文件
  • 云手机:社交平台运营的热门工具