社区首页
博客
论坛
下载
文库
评测
芯语
研讨会
商城
EE直播间
芯视频
E聘
更多
社区
论坛
博客
下载
评测中心
面包芯语
问答
E币商城
社区活动
资讯
电子工程专辑
国际电子商情
电子技术设计
CEO专栏
eeTV
EE|Times全球联播
资源
EE直播间
在线研讨会
视频
白皮书
小测验
供应商资源
ASPENCORE Studio
活动
2025 中国国际低空经济产业创新发展大会
2025 第六届国际 AIoT 生态发展大会
2025 全球 MCU 生态发展大会
2025 第六届中国国际汽车电子高峰论坛
IIC Shenzhen 2025
2025国际电子商情分销与供应链行业年会
IIC Shanghai 2025
更多活动预告
杂志与服务
免费订阅杂志
电子工程专辑电子杂志
电子技术设计电子杂志
国际电子商情电子杂志
登录|注册
芯语
帖子
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
首页
热门
专栏作家
电子产业热词
CEO专栏
技术文库
科技头条
专栏入驻
×
提示!
您尚未开通专栏,立即申请专栏入驻
芯语
帖子
博文
用户
芯语
登录
首页
专栏作家
CEO专栏
论坛
博客
E币商城
资讯
电子工程专辑
国际电子商情
电子技术设计
函数调用
基于LinkerScript与__attribute__((section))实现C语言函数调用实战
在嵌入式开发和系统编程中,有时候我们需要对程序的布局进行精细控制,以便更好地管理内存资源。Linux下的链接器(ld)提供了强大的功能,可以让我们在链接阶段定制程序的布局。本文将介绍如何利用 Linker Script 结合 C 语言中的 __attribute__((section)) 属性来实现函数的自定义排列,并通过一个简单的示例展示如何遍历这些函数并调用它们。一、引言在编写大型应用程序或嵌
Linux二进制
2024-09-11
554浏览
Valgrind|让代码问题无处遁形,函数调用一目了然
一、Valgrind概述Valgrind 是一套 Linux 下,开放源代码(GPL V2)的仿真调试工具的集合,包含多个工具,如Memcheck、Callgrind、Cachegrind、Helgrind、Massif,主要用于帮助开发者发现和解决程序中的内存泄露检测、数据竞争、死锁、缓存性能分析、生成函数调用图和其它问题。Memcheck工具Memcheck 是 Valgrind 工具集中的一
Linux二进制
2024-08-13
1582浏览
关于C语言函数调用的几个内幕
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2023-10-23
666浏览
系统调用与函数调用有什么区别?
今天,我们来聊一聊系统调用与普通的函数调用之间有什么区别。作为程序员,你肯定写过无数的函数,假设有这样两个函数:void funcB() {}void funcA() { funcB();}函数之间是可以相互调用的,这很简单很happy有没有。要知道是代码、是函数就可以相互调用,不管你用什么语言写的。假设funcB是内核中的函数,funcA是你自己写的函数,就像这样:// Linux内核中的函数
嵌入式ARM
2023-03-20
1003浏览
函数调用在嵌入式架构设计中的应用
1、前言 函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可2、函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗?函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使用的方式,下面的方式就属于直接调用了。int
嵌入式ARM
2022-12-26
821浏览
函数调用时,栈是如何变化的?
大家都知道,函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是,对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。1. 栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp
嵌入式ARM
2022-12-16
895浏览
函数调用在嵌入式架构设计中的应用
关注+星标公众号,不错过精彩内容来源 | 大橙子疯嵌入式函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗???函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使
strongerHuang
2022-11-28
825浏览
你真的知道C语言函数调用的内幕吗?
点击左上方蓝色“混说Linux”,选择“设为星标”第一时间看干货文章 1 C语言使用函数调用,我们再熟悉不过了,但是函数调用在内存中究竟发生了什么真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最
面包板社区
2022-11-26
943浏览
C语言函数调用:关于错误码和返回值传递的几个小思考
C 语言是一门面向过程的编程语言,通过一个又一个函数,把计算、过程控制等逻辑,包装成一个个独立的处理单元。既然是函数调用,就一定会有参数和返回值的传递问题,因此也就产生了多种不同的编程范式,比如:Posix 风格:函数返回值只用来表示成功(0)或失败(非0),其他的输出结果都使用参数来传递。Unix 风格:函数返回值即包括错误代码,也包括有用的输出结果。GAI 风格:与 Posix 有点类似,函数
嵌入式ARM
2022-10-08
1224浏览
你真的知道C语言函数调用的内幕吗?
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2022-09-28
1053浏览
浅谈函数调用!
导语 | 在任意一门编程语言中,函数调用基本上都是非常常见的操作;我们都知道,函数是由调用栈实现的,不同的函数调用会切换上下文;但是,你是否好奇,对于一个函数调用而言,其底层到底是如何实现的呢?本文讲解了函数调用的底层逻辑实现。一、汇编概述既然要讲解函数调用的底层逻辑实现,那么汇编语言我们是绕不过的。因此,首先来复习一下汇编相关的知识。我们都知道,计算机只能读懂二进制指令,而汇编就是一组特定的字
C语言与CPP编程
2022-08-17
1069浏览
程序员必备高级技术之函数调用栈
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。有些同学可能觉得没必要了解这么深入,其实非也。根据本号多年的经验,了解系统深层次的原理对分析疑难问题有很好的帮助。图0 函数栈就像熟悉抓包是解决网络通信问题的高级武器一样,熟悉函数调用栈则是分析程序内存问题的高级武器。本文以Linux 6
一口Linux
2022-05-19
5061浏览
sourceinsight超棒的功能——查看函数调用
关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥source insight相信大家用的很多了,我本人以前也用得很多,只是后来转到vscode了,最近搞一个项目,层层调用实在是太多了,有时候找代码根源都忘记自己是从哪里开始的。偶然记得source insight有一个relation window的功能,然后我在vscode上面没有找到相应的插件,所以又用了source i
李肖遥
2022-04-06
1939浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
C语言与CPP编程
2022-03-21
1749浏览
Linux是如何进行函数调用的?
先抛出几个问题:进程虚拟地址空间是如何分布的?函数调用的栈帧结构是什么样子?函数调用涉及到的寄存器都起了什么作用?函数参数是如何传递的?传递顺序如何?函数的返回值是如何传递的?如果您对上述问题有些困惑,请继续往下看吧!进程的内存布局如图:高地址的一部分空间会分配给内核,称为内核空间,剩下的内存空间给用户使用,称为用户空间。用户空间中有几个主要的内存区域:栈:用于维护函数调用的上下文,离开了栈,函
嵌入式ARM
2021-12-22
1296浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
嵌入式客栈
2021-12-16
1803浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式大杂烩
2021-12-07
984浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式资讯精选
2021-08-26
1471浏览
程序崩溃时,如何获取函数调用栈信息
一、前言二、Linux 平台三、Windwos 平台一、前言程序在执行过程中 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。因此,程序的日志系统需要侦测这种情况,在代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。这篇文章的理论知识很少,直接分享 2 段代码:在 Linux 和 Windows 这 2 个平台上,如
C语言与CPP编程
2021-06-07
1709浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。正文这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译
C语言与CPP编程
2021-05-08
1309浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话 这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。 正文 这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Lin
C语言与CPP编程
2021-05-08
2176浏览
C51中函数调用时参数是怎么传递的?
先说一下 首先问一个问题,C51中函数调用时参数是怎么传递的? 你肯定会说是通过堆栈把实参压栈传递的对吧? 不对哦,8051单片机内存十分有限,没有软件堆栈,函数调用不通过堆栈来传递形参,而硬件堆栈空间也十分有限,程序里所有的局部变量以及全局变量都是编译的时候固定存储在某个地址的存储空间的,函数调用的时候就不用压栈了,函数的形参通过存储地址或者寄存器来传递,查了一下: (1)少于3个参数的
嵌入式资讯精选
2021-04-19
1696浏览
C++函数调用过程深入分析
0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。 首先对三个常用的寄存器做一下说明,EIP是指令指针,即指向下一条即将执行的指令的地址;EBP为基址
C语言与CPP编程
2021-04-06
1347浏览
【粉丝问答18】linux下查看函数被那些函数调用过?
欢迎订阅粉丝问答专题,点击下面链接,然后点击订阅: 《粉丝问答》 一、问题 有个打印log的函数,想知道该函数执行的时候,之前执行了哪些函数? 二、分析 在应用程序打印函数栈需要通过函数backtrace(),该函数对应头文件如下: #include <execinfo.h> 1、三个与打印调用栈相关的函数 打印函数栈
一口Linux
2021-03-25
1758浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。 今天和大家一起看下面对 crash 日志的时候,如何利用 sta
一口Linux
2021-01-24
2285浏览
正在努力加载更多...
广告
今日
新闻
1
物理智能:打破数字壁垒,让AI触摸真实世界
2
索尼或拆分低利润率的半导体子公司
3
北京新政支持民营企业采购自主可控 GPU,买谁家的好?
4
用PWM编程LM317恒流源:多方案汇总
5
康佳集团实控人变更为中国华润
6
加速推动大模型广泛应用,三大算力痛点何解?
7
特朗普政府AI政策调整:取消国家分级,转向“芯片外交”
8
官宣!恩智浦CEO年底退休
热门
文章排行
1
传中国对部分美国芯片加征关税豁免:125%降至0
52RD
3128
2
传中国对部分美国芯片加征关税豁免:125%降至0
射频美学
2862
3
传!部分美国产芯片获中国125%关税豁免
芯极速
2708
4
闭环!DeepSeek-R2与华为深度合体,昇腾芯片利用率达82%;推理成本较GPT-4下降了97.4%!
飙叔科技洞察
2189
5
中国对部分美国芯片加征关税豁免:125%降至0
芯片视界
2168
6
重磅!华为AI芯片910C将于5月量产出货,920也在路上了!
飙叔科技洞察
2056
7
储能行业中的“五大四小”是什么?
锂电联盟会长
1923
8
传中国对部分美国芯片免征关税!
皇华电子元器件IC供应商
1891
9
曝蔚来一智驾技术大佬离职!
谈思汽车
1613
10
DeepSeekR2要来了!看点大爆料
ittbank
1609
11
美国要破防了!DeepSeekR2将彻底摆脱英伟达,全部基于华为芯片
快科技
1545
12
突发!传中国对部分美国芯片免征关税!
ittbank
1343
13
华为激进!Mate80塞进大风扇,麒麟性能这下爆发了
手机技术资讯
1244
14
iQOOZ10TurboPro发布:特爆越级,样样超Pro
Qualcomm中国
1122
15
2025上海车展智驾域控制器方案大盘点(共28家)
汽车电子与软件
1120
16
泡沫正在破灭!英伟达高位下跌60%正在成为现实
美股研究社
1104
17
2025上海车展前瞻报告:创新智联自主竞逐高端
智车文库
1102
18
CIS全球出货排名TOP3:中国包揽两席!
EETOP
1092
19
IDC:2025年Q1中国折叠屏手机出货增长53.1%,华为份额超75%
52RD
836
20
传海关通知:符合条件的美产芯片豁免关税
贞光科技
781
21
REDMITurbo4Pro发布:首发第四代骁龙8s,体验再升级
Qualcomm中国
775
22
串行外设接口(SPI)协议:原理、架构与应用
汽车电子与软件
766
23
传华为接洽多家企业,测试昇腾910D
芯极速
766
24
粤芯半导体启动IPO辅导!国产射频芯片厂商锐石创芯拟A股IPO!
飙叔科技洞察
757
25
AI落地系列——《工厂里的AI工人:智能制造的新时代》
中兴文档
741
26
传中国对部分美国芯片免征关税:这一类除外
文Q聊硬件
715
27
曝比亚迪智能化团队再次大调整!
谈思汽车
684
28
索尼Xperia1VII真机首曝:手机行业唯一清流设计
快科技
683
29
IDC:2025年Q1中国折叠屏手机出货增长53.1%,华为份额超75%
ittbank
682
30
中国稀土"断供",冲击全球产业链
芯极速
650
广告
最新
评论
更多>>
学习了
青青水草
评论文章
2025-04-22
湿度正在偷偷毁掉你的基准源精度!
good,.
mhlyjay
评论文章
2025-04-22
MOS管损耗理论计算公式推导及LTspice仿真验证
资料
文库
帖子
博文
1
电源工程师技术培训-初级
2
微弱直流电压信号采集
3
2025年感知技术十大趋势深度分析报告
4
C#+WPF+Opencv模块化开发视觉对位运动控制系统
5
[完结14章]Vue3.5+Electron+大模型 跨平台AI桌面聊天应用实战
6
[完结14章]RAG全栈技术从基础到精通 ,打造高精准AI应用
7
如何使用英飞凌IGBT7设计高性能伺服驱动器
8
[鸟哥的Linux私房菜:服务器架设篇(第二版)].鸟哥.扫描版
9
【2025新品】java-antd-web3全栈dapp开发教程
10
【Winform+WPF】喷涂工艺SCADA采集监控上位机
1
【2025面包板社区内容狂欢节】发文、回帖赢25万E币!
2
已知并联电阻总阻值,算出23456个......并联电阻的阻值,比...
3
差分晶振的输出方式有哪几种呢
4
【敏矽微ME32G030系列】+初识及测试开发板(外接继电器)
5
【拆解】某斑学习思维机
6
电解电容寿命能不能满足5年?固态电容的寿命是不是要更...
7
MacBook扩展坞怎么选?
8
IU5209E升压充电管理芯片
1
浪潮之上:智能时代的觉醒
2
资安及护眼 –防窥片的常见问题及测试要点
3
连续流型液氮恒温器核心特点解析
4
营收净利双暴跌,股价腰斩,老板电器任富佳当不好老板
5
芯知识|小体积语音芯片方案WTV/WT2003H声音播放ic应用解析
6
T3出行的破局之路在何方?
7
贴片电感和贴片电容的区分方法
8
宁德时代,无孔不入
1
MOSFET结构及其工作原理详解
2
什么是运算放大器?一分钟让你了解怎么用!
3
增强型MOS场效应管电路分析方法
4
收藏|原理图设计规范133条检查清单
5
线弧异常分析
6
电流检测,采样电阻Rshunt切换电路设计
7
简单聊无源器件与有源器件的区别
8
手机充电器插入排插时打火花是怎么回事?
9
电子封装陶瓷基板及其金属化工艺
10
TL494反相降压-升压转换器电路工作原理、电路设计、计算、测试
在线研讨会
利用氮化镓技术打造高效电机驱动——人形机器人、无人机与电动汽车应用
ADMT4000重新定义多圈编码器设计
NSSine™系列实时控制MCU在数字电源和电机控制领域的应用
ST 在大功率热管理系统中的电机控制系统方案(AI 数据中心/暖通空调/电池储能系统/变频制冷)
EE直播间
中小数字IC云仿真加速方案:弹性资源与验证效率提升
直播时间:05月22日 10:00
E聘热招职位
本网页已闲置超过10分钟,按键盘任意键或点击空白处,即可回到网页
X
最新资讯
物理智能:打破数字壁垒,让AI触摸真实世界
索尼或拆分低利润率的半导体子公司
北京新政支持民营企业采购自主可控 GPU,买谁家的好?
用PWM编程LM317恒流源:多方案汇总
康佳集团实控人变更为中国华润