社区首页
博客
论坛
下载
文库
评测
芯语
研讨会
商城
EE直播间
芯视频
E聘
更多
社区
论坛
博客
下载
评测中心
面包芯语
问答
E币商城
社区活动
资讯
电子工程专辑
国际电子商情
电子技术设计
CEO专栏
eeTV
EE|Times全球联播
资源
EE直播间
在线研讨会
视频
白皮书
小测验
供应商资源
ASPENCORE Studio
活动
IIC Shanghai 2023
2023(第四届)国际 AIoT 生态发展大会
全球 MCU 生态发展大会
第四届临港半导体产业高峰论坛暨司南科技奖颁奖盛典
IIC Shenzhen 2023
第四届中国国际汽车电子高峰论坛
更多活动预告
杂志与服务
免费订阅杂志
电子工程专辑电子杂志
电子技术设计电子杂志
国际电子商情电子杂志
帖子
帖子
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
×
提示!
您尚未开通专栏,立即申请专栏入驻
帖子
博文
用户
芯语
首页
专栏作家
CEO专栏
论坛
博客
E币商城
资讯
电子工程专辑
国际电子商情
电子技术设计
函数调用
基于LinkerScript与__attribute__((section))实现C语言函数调用实战
在嵌入式开发和系统编程中,有时候我们需要对程序的布局进行精细控制,以便更好地管理内存资源。Linux下的链接器(ld)提供了强大的功能,可以让我们在链接阶段定制程序的布局。本文将介绍如何利用 Linker Script 结合 C 语言中的 __attribute__((section)) 属性来实现函数的自定义排列,并通过一个简单的示例展示如何遍历这些函数并调用它们。一、引言在编写大型应用程序或嵌
Linux二进制
2024-09-11
483浏览
Valgrind|让代码问题无处遁形,函数调用一目了然
一、Valgrind概述Valgrind 是一套 Linux 下,开放源代码(GPL V2)的仿真调试工具的集合,包含多个工具,如Memcheck、Callgrind、Cachegrind、Helgrind、Massif,主要用于帮助开发者发现和解决程序中的内存泄露检测、数据竞争、死锁、缓存性能分析、生成函数调用图和其它问题。Memcheck工具Memcheck 是 Valgrind 工具集中的一
Linux二进制
2024-08-13
833浏览
关于C语言函数调用的几个内幕
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2023-10-23
649浏览
系统调用与函数调用有什么区别?
今天,我们来聊一聊系统调用与普通的函数调用之间有什么区别。作为程序员,你肯定写过无数的函数,假设有这样两个函数:void funcB() {}void funcA() { funcB();}函数之间是可以相互调用的,这很简单很happy有没有。要知道是代码、是函数就可以相互调用,不管你用什么语言写的。假设funcB是内核中的函数,funcA是你自己写的函数,就像这样:// Linux内核中的函数
嵌入式ARM
2023-03-20
988浏览
函数调用在嵌入式架构设计中的应用
1、前言 函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可2、函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗?函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使用的方式,下面的方式就属于直接调用了。int
嵌入式ARM
2022-12-26
751浏览
函数调用时,栈是如何变化的?
大家都知道,函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是,对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。1. 栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp
嵌入式ARM
2022-12-16
867浏览
函数调用在嵌入式架构设计中的应用
关注+星标公众号,不错过精彩内容来源 | 大橙子疯嵌入式函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗???函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使
strongerHuang
2022-11-28
799浏览
你真的知道C语言函数调用的内幕吗?
点击左上方蓝色“混说Linux”,选择“设为星标”第一时间看干货文章 1 C语言使用函数调用,我们再熟悉不过了,但是函数调用在内存中究竟发生了什么真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最
面包板社区
2022-11-26
923浏览
C语言函数调用:关于错误码和返回值传递的几个小思考
C 语言是一门面向过程的编程语言,通过一个又一个函数,把计算、过程控制等逻辑,包装成一个个独立的处理单元。既然是函数调用,就一定会有参数和返回值的传递问题,因此也就产生了多种不同的编程范式,比如:Posix 风格:函数返回值只用来表示成功(0)或失败(非0),其他的输出结果都使用参数来传递。Unix 风格:函数返回值即包括错误代码,也包括有用的输出结果。GAI 风格:与 Posix 有点类似,函数
嵌入式ARM
2022-10-08
1110浏览
你真的知道C语言函数调用的内幕吗?
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2022-09-28
1033浏览
浅谈函数调用!
导语 | 在任意一门编程语言中,函数调用基本上都是非常常见的操作;我们都知道,函数是由调用栈实现的,不同的函数调用会切换上下文;但是,你是否好奇,对于一个函数调用而言,其底层到底是如何实现的呢?本文讲解了函数调用的底层逻辑实现。一、汇编概述既然要讲解函数调用的底层逻辑实现,那么汇编语言我们是绕不过的。因此,首先来复习一下汇编相关的知识。我们都知道,计算机只能读懂二进制指令,而汇编就是一组特定的字
C语言与CPP编程
2022-08-17
1017浏览
程序员必备高级技术之函数调用栈
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。有些同学可能觉得没必要了解这么深入,其实非也。根据本号多年的经验,了解系统深层次的原理对分析疑难问题有很好的帮助。图0 函数栈就像熟悉抓包是解决网络通信问题的高级武器一样,熟悉函数调用栈则是分析程序内存问题的高级武器。本文以Linux 6
一口Linux
2022-05-19
5004浏览
sourceinsight超棒的功能——查看函数调用
关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥source insight相信大家用的很多了,我本人以前也用得很多,只是后来转到vscode了,最近搞一个项目,层层调用实在是太多了,有时候找代码根源都忘记自己是从哪里开始的。偶然记得source insight有一个relation window的功能,然后我在vscode上面没有找到相应的插件,所以又用了source i
李肖遥
2022-04-06
1787浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
C语言与CPP编程
2022-03-21
1679浏览
Linux是如何进行函数调用的?
先抛出几个问题:进程虚拟地址空间是如何分布的?函数调用的栈帧结构是什么样子?函数调用涉及到的寄存器都起了什么作用?函数参数是如何传递的?传递顺序如何?函数的返回值是如何传递的?如果您对上述问题有些困惑,请继续往下看吧!进程的内存布局如图:高地址的一部分空间会分配给内核,称为内核空间,剩下的内存空间给用户使用,称为用户空间。用户空间中有几个主要的内存区域:栈:用于维护函数调用的上下文,离开了栈,函
嵌入式ARM
2021-12-22
1280浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
嵌入式客栈
2021-12-16
1769浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式大杂烩
2021-12-07
961浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式资讯精选
2021-08-26
1406浏览
程序崩溃时,如何获取函数调用栈信息
一、前言二、Linux 平台三、Windwos 平台一、前言程序在执行过程中 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。因此,程序的日志系统需要侦测这种情况,在代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。这篇文章的理论知识很少,直接分享 2 段代码:在 Linux 和 Windows 这 2 个平台上,如
C语言与CPP编程
2021-06-07
1619浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。正文这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译
C语言与CPP编程
2021-05-08
1284浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话 这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。 正文 这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Lin
C语言与CPP编程
2021-05-08
2139浏览
C51中函数调用时参数是怎么传递的?
先说一下 首先问一个问题,C51中函数调用时参数是怎么传递的? 你肯定会说是通过堆栈把实参压栈传递的对吧? 不对哦,8051单片机内存十分有限,没有软件堆栈,函数调用不通过堆栈来传递形参,而硬件堆栈空间也十分有限,程序里所有的局部变量以及全局变量都是编译的时候固定存储在某个地址的存储空间的,函数调用的时候就不用压栈了,函数的形参通过存储地址或者寄存器来传递,查了一下: (1)少于3个参数的
嵌入式资讯精选
2021-04-19
1645浏览
C++函数调用过程深入分析
0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。 首先对三个常用的寄存器做一下说明,EIP是指令指针,即指向下一条即将执行的指令的地址;EBP为基址
C语言与CPP编程
2021-04-06
1330浏览
【粉丝问答18】linux下查看函数被那些函数调用过?
欢迎订阅粉丝问答专题,点击下面链接,然后点击订阅: 《粉丝问答》 一、问题 有个打印log的函数,想知道该函数执行的时候,之前执行了哪些函数? 二、分析 在应用程序打印函数栈需要通过函数backtrace(),该函数对应头文件如下: #include <execinfo.h> 1、三个与打印调用栈相关的函数 打印函数栈
一口Linux
2021-03-25
1746浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。 今天和大家一起看下面对 crash 日志的时候,如何利用 sta
一口Linux
2021-01-24
2249浏览
正在努力加载更多...
广告
今日
新闻
1
虚拟天线技术:物联网天线设计的不同方法
2
美国亚利桑那州成为第三个芯片研发旗舰设施预选地址,将建设300毫米芯片研发中心
3
提升亮度和寿命期!LG Display将在广州OLED工厂量产四堆叠W-OLED面板
4
瑞萨电子被曝计划在全球裁员数百人
5
传Imagination停止RISC-V处理器核心开发,增强GPU和AI产品投资
6
TCL正式发布“世界上第一款模块化人工智能伴侣机器人”
7
针对美国“中国军事企业清单”,商务部回应……
8
端侧AI破局者:炬芯科技重塑音频芯未来
热门
文章排行
1
CES2025|1月7日上午10:30观看NVIDIACEO黄仁勋主题演讲
英伟达NVIDIA中国
4504
2
美国将长鑫、腾讯等134家中企列入黑名单(附中英文名单)
集成电路IC
3355
3
2024年12月及全年新能源汽车销量排名
一览众车
2159
4
买了一年多的电车,续航从400掉到40公里!女车主崩溃:换电池都没货
快科技
2052
5
明天发布!NVIDIA新核弹RTX5090规格、售价抢先看
硬件世界
1427
6
骂华为的孙院士,上新闻联播了!说华为搞封闭垄断,是难以对抗西方的!
集成电路IC
1371
7
苹果2025年19款新品抢先看:最便宜和最轻薄iPhone都来了!
手机技术资讯
1141
8
阿里前董事长张勇履新职;字节TikTok算法负责人或离职;英特尔CEO突然宣布退休|2024年12月全球科技企业高管变动
全球TMT
1135
9
王炸来了!特斯拉自动驾驶即将进入中国,只有华为能接招?
飙叔科技洞察
1113
10
季华实验室、鹏城实验室、长春光机所等被美国“拉黑”,新型显示产业发展或“添堵”
JMInsights集摩咨询
870
11
上海2025年新能源牌照政策压哨更新!哪些细节值得关注?
汽车电子设计
855
12
本月,美国将发布AI芯片新禁令
谈思汽车
845
13
突发!传激光雷达巨头大规模裁员,无年终奖!
EETOP
822
14
2024中国大陆晶圆厂(Fab)汇总
芯极速
800
15
扎克伯格高调庆祝40岁生日,花千万打造童年派对,比尔盖茨惊喜现身
美股研究社
777
16
明日挂牌上市!功率模组核心部件散热基板国产龙头企业的成本与价值
碳化硅芯观察
769
17
三星复制“梁孟松模式”落空
芯极速
753
18
消息称吉利、旷视展开智能驾驶合作,或成立一家新合资公司
52RD
749
19
又来!美国国防部将腾讯/宁德时代/长鑫存储/移远等134家中企列入黑名单
芯片之家
735
20
年内拿下欧洲!国产大飞机交付超50架,重点布局三大海外市场!
飙叔科技洞察
698
21
奥士康、世运、依顿…PCB企业2024年向泰国公司增资情况一览
PCBworld
649
22
iPhoneSE4更名为16E:2025年最便宜的苹果手机
手机技术资讯
618
23
2024信创:一文看懂国产芯片格局
智能计算芯世界
613
24
兆易创新:高算力GD32G5系列MCU如何引领数字能源、电机控制与光通信的变革
皇华电子元器件IC供应商
605
25
16499元起的RTX5090D要让玩家破产!好消息:游戏性能一刀未砍
硬件世界
594
26
合计超61亿元!新增3起功率半导体收购/IPO案
行家说汽车半导体
584
27
曝极越汽车开始返聘员工夏一平称不会放弃
智能汽车电子与软件
581
28
2024年显示市场复盘:MIP技术异军突起,利亚德、东山精密等“抢滩”
JMInsights集摩咨询
578
29
华为车BU正式转入引望;赛力斯首笔支付23亿正式入股引望!
飙叔科技洞察
567
30
2024年全球汽车零部件供应商百强榜单:行业巨头与新兴力量的较量
智能汽车设计
559
广告
最新
评论
更多>>
一般喜欢标榜“打破垄断”“国x领先”的都死的比较快。嘴比手厉害
56089689_...
评论文章
2025-01-07
砺芯慧感:量产薄膜铂电阻传感器,打破国外30年垄断
我这,原先V10.5跑的好好的代码,更新V11后,单片机初始化时就不断重启
vaov_3734...
评论文章
2025-01-06
FreeRTOSV11.0升级了多项重要功能,兼容V10版本
资料
文库
帖子
博文
1
汽车动力与底盘MCU市场现状研究报告
2
20套大厂USP电路合集
3
《彩色电视机原理与维修》
4
《时间的1000个瞬间》林为民
5
无线传能充电器设计与实现论文
6
《时间简史》(霍金 著)
7
ISO 7637-1-2023
8
ESP32TFT常用字体库.zip
9
12-8学习笔记
10
ASTM D 130-12
1
【工程师故事】+2024年:跟大家说说我从工程师到教师的跨界之旅
2
过流保护,大家都会采集电流后经过运放放大送单片机,单片机控制MOS,从而保护后级电路。那短路保护,大家都是怎么做的。现在遇到一个问题,...
3
C语言输出圣诞树
4
ESP32搭建TFT_LCD中文字库,附常用字库
5
摩托车电子,ACC钥匙开关关了后,用示波器挂在ACC线上,还是能抓到一个漏电波形,设置的是5V的触发电平。这种概率性的漏电波形如何有什么办法吸...
6
超低频示波器的原理和应用
7
求助 请推荐一款8脚的DCDC , 12V 变5V的, 2A 就行,不虚标。
8
【工程师故事】+2024年:资深嵌入式工程师在职读研的第一年,收获颇丰
1
汽车免拆诊断 | 2017 款东风风神 AX7 车热机后怠速不稳
2
探索光耦:光耦在风力发电中的应用——保障绿色能源的高效与安全
3
领导力:你这个将要拉你进上职场暂突的秘密
4
RK3562编译Android13 ROOT固件教程,触觉智能开发板演示
5
硅电容系列二:硅电容主要厂家– 村田
6
NXP iMX8MP 处理器基于 Linux 关闭 Debug Console 输出
7
无人机锂电池行业发展现状及市场潜力分析报告
8
谈大模型的赋能
1
二极管串联的电源防反接电路
2
为什么建议你用表驱动法?嵌入式C语言代码开发技巧
3
设计一个放大电路
4
硬件工程师入门基础知识:元器件在电路中的应用
5
Linux 内核中的三种memory model
6
PCB上常见的图标都是什么意思?
7
BUCK-BOOST 的原理、元器件选择、设计实例以及实际应用中的注意事项
8
DC-DC电路设计器件选型及注意事项
9
简述BUCK电路不同模式(CCM/DCM)的占空比
10
如何学好电气二次回路?
在线研讨会
多路有光·精准不凡——KSW-SGM01模拟信号源发布会
重塑机器人未来:揭秘创新芯片解决方案的颠覆力量
迈来芯Triaxis® 3D磁传感器:汽车安全应用的优选方案
适用于安全连接的新一代PIC32CK SG/GC系列单片机
EE直播间
第三代功率半导体器件测试解决方案
直播时间:03月06日 10:00
E聘热招职位
本网页已闲置超过10分钟,按键盘任意键或点击空白处,即可回到网页
X
最新资讯
虚拟天线技术:物联网天线设计的不同方法
美国亚利桑那州成为第三个芯片研发旗舰设施预选地址,将建设300毫米芯片研发中心
提升亮度和寿命期!LG Display将在广州OLED工厂量产四堆叠W-OLED面板
瑞萨电子被曝计划在全球裁员数百人
传Imagination停止RISC-V处理器核心开发,增强GPU和AI产品投资