操作系统笔记(三)函数堆栈

操作系统笔记(三)函数堆栈

ctime:2020-04-29 22:47:57 +0900|1588168077

标签(空格分隔): 技术 操作系统


练习5 完成函数调用堆栈记录的跟踪函数

函数调用的入栈顺序

主要有几种,__cdecl、__fastcall、__stdcall,都是函数的调用约定,主要决定函数的参数入栈顺序,以及入栈的参数到底是由调用者还是被调用者清除。

其中,cdecl是C语言默认的调用约定。

所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。

根据入栈顺序:参数4 参数3 参数2 参数1 返回地址 ebp 局部变量,可以写出函数:

void
print_stackframe(void) {
     uint32_t ebp=read_ebp();
     uint32_t eip=read_eip();
     for(int i=0;i<STACKFRAME_DEPTH;++i){
         cprintf("ebp:%d  eip:%d  ",ebp,eip);
         cprintf("args: ");
         for(int j=0;j<4;++j){
             cprintf("%d ",*(uint32_t *)(ebp+8+j*4));
         }
         cprintf("\n");
         print_debuginfo(eip-1);
         eip=*(uint32_t *)(ebp+4);
         ebp=*(uint32_t *)ebp;

     }
}

一开始考虑半天,怎么判断到达栈底了,后来才发现原来要求里直接给了常数STACKFRAME_DEPTH作为栈深度,不需要判断是否到达栈底。

运行结果:

此处输入图片的描述

内容概要:《2024年中国城市低空经济发展指数报告》由36氪研究院发布,指出低空经济作为新质生产力的代表,已成为中国经济新的增长点。报告从发展环境、资金投入、创新能力、基础支撑和发展成效五个维度构建了综合指数评价体系,评估了全国重点城市的低空经济发展状况。北京和深圳在总指数中名列前茅,分别以91.26和84.53的得分领先,展现出强大的资金投入、创新能力和基础支撑。低空经济主要涉及无人机、eVTOL(电动垂直起降飞行器)和直升机等产品,广泛应用于农业、物流、交通、应急救援等领域。政策支持、市场需求和技术进步共同推动了低空经济的快速发展,预计到2026年市场规模将突破万亿元。 适用人群:对低空经济发展感兴趣的政策制定者、投资者、企业和研究人员。 使用场景及目标:①了解低空经济的定义、分类和发展驱动力;②掌握低空经济的主要应用场景和市场规模预测;③评估各城市在低空经济发展中的表现和潜力;④为政策制定、投资决策和企业发展提供参考依据。 其他说明:报告强调了政策监管、产业生态建设和区域融合错位的重要性,提出了加强法律法规建设、人才储备和基础设施建设等建议。低空经济正加速向网络化、智能化、规模化和集聚化方向发展,各地应找准自身比较优势,实现差异化发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值