社区首页
博客
论坛
下载
文库
评测
芯语
研讨会
商城
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
465浏览
Valgrind|让代码问题无处遁形,函数调用一目了然
一、Valgrind概述Valgrind 是一套 Linux 下,开放源代码(GPL V2)的仿真调试工具的集合,包含多个工具,如Memcheck、Callgrind、Cachegrind、Helgrind、Massif,主要用于帮助开发者发现和解决程序中的内存泄露检测、数据竞争、死锁、缓存性能分析、生成函数调用图和其它问题。Memcheck工具Memcheck 是 Valgrind 工具集中的一
Linux二进制
2024-08-13
664浏览
关于C语言函数调用的几个内幕
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2023-10-23
647浏览
系统调用与函数调用有什么区别?
今天,我们来聊一聊系统调用与普通的函数调用之间有什么区别。作为程序员,你肯定写过无数的函数,假设有这样两个函数:void funcB() {}void funcA() { funcB();}函数之间是可以相互调用的,这很简单很happy有没有。要知道是代码、是函数就可以相互调用,不管你用什么语言写的。假设funcB是内核中的函数,funcA是你自己写的函数,就像这样:// Linux内核中的函数
嵌入式ARM
2023-03-20
980浏览
函数调用在嵌入式架构设计中的应用
1、前言 函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可2、函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗?函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使用的方式,下面的方式就属于直接调用了。int
嵌入式ARM
2022-12-26
738浏览
函数调用时,栈是如何变化的?
大家都知道,函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是,对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。1. 栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp
嵌入式ARM
2022-12-16
862浏览
函数调用在嵌入式架构设计中的应用
关注+星标公众号,不错过精彩内容来源 | 大橙子疯嵌入式函数调用很好理解,即使刚学没多久的朋友也知道函数调用是怎么实现的,即调用一个已经封装好的函数,实现某个特定的功能。把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口,然后在其他地方调用即可函数调用方式 函数调用难道还能怎么调用?不就封装好直接调用吗???函数调用方式分为两种:直接调用和间接调用直接调用直接调用就是我们平常使
strongerHuang
2022-11-28
795浏览
你真的知道C语言函数调用的内幕吗?
点击左上方蓝色“混说Linux”,选择“设为星标”第一时间看干货文章 1 C语言使用函数调用,我们再熟悉不过了,但是函数调用在内存中究竟发生了什么真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最
面包板社区
2022-11-26
914浏览
C语言函数调用:关于错误码和返回值传递的几个小思考
C 语言是一门面向过程的编程语言,通过一个又一个函数,把计算、过程控制等逻辑,包装成一个个独立的处理单元。既然是函数调用,就一定会有参数和返回值的传递问题,因此也就产生了多种不同的编程范式,比如:Posix 风格:函数返回值只用来表示成功(0)或失败(非0),其他的输出结果都使用参数来传递。Unix 风格:函数返回值即包括错误代码,也包括有用的输出结果。GAI 风格:与 Posix 有点类似,函数
嵌入式ARM
2022-10-08
1071浏览
你真的知道C语言函数调用的内幕吗?
C语言使用函数调用,我们再熟悉不过了。但是,函数调用在内存中究竟发生了什么,你真的清楚吗?只有搞清楚内存里的内幕,才算完全搞懂函数的调用。这里涉及一个知识点:栈。不管是函数执行还是函数调用,一定要开辟一段内存空间,这块空间就是栈。栈是一种“后进先出(FILO)”的逻辑结构,比如一堆碗,最先洗完的碗放在最下面,最后洗完的在最上面,吃饭的时候从最上面开始拿。最上面的碗我们称之为栈顶,最底下的碗我们称之
嵌入式ARM
2022-09-28
1029浏览
浅谈函数调用!
导语 | 在任意一门编程语言中,函数调用基本上都是非常常见的操作;我们都知道,函数是由调用栈实现的,不同的函数调用会切换上下文;但是,你是否好奇,对于一个函数调用而言,其底层到底是如何实现的呢?本文讲解了函数调用的底层逻辑实现。一、汇编概述既然要讲解函数调用的底层逻辑实现,那么汇编语言我们是绕不过的。因此,首先来复习一下汇编相关的知识。我们都知道,计算机只能读懂二进制指令,而汇编就是一组特定的字
C语言与CPP编程
2022-08-17
1013浏览
程序员必备高级技术之函数调用栈
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。有些同学可能觉得没必要了解这么深入,其实非也。根据本号多年的经验,了解系统深层次的原理对分析疑难问题有很好的帮助。图0 函数栈就像熟悉抓包是解决网络通信问题的高级武器一样,熟悉函数调用栈则是分析程序内存问题的高级武器。本文以Linux 6
一口Linux
2022-05-19
4991浏览
sourceinsight超棒的功能——查看函数调用
关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥source insight相信大家用的很多了,我本人以前也用得很多,只是后来转到vscode了,最近搞一个项目,层层调用实在是太多了,有时候找代码根源都忘记自己是从哪里开始的。偶然记得source insight有一个relation window的功能,然后我在vscode上面没有找到相应的插件,所以又用了source i
李肖遥
2022-04-06
1765浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
C语言与CPP编程
2022-03-21
1661浏览
Linux是如何进行函数调用的?
先抛出几个问题:进程虚拟地址空间是如何分布的?函数调用的栈帧结构是什么样子?函数调用涉及到的寄存器都起了什么作用?函数参数是如何传递的?传递顺序如何?函数的返回值是如何传递的?如果您对上述问题有些困惑,请继续往下看吧!进程的内存布局如图:高地址的一部分空间会分配给内核,称为内核空间,剩下的内存空间给用户使用,称为用户空间。用户空间中有几个主要的内存区域:栈:用于维护函数调用的上下文,离开了栈,函
嵌入式ARM
2021-12-22
1273浏览
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。如图所示,栈是由高地址向地地址的方向生长的,而且栈有其栈顶和栈底,入栈出栈的地方就叫做栈顶。在x86系统的CPU中,rsp是栈指针寄
嵌入式客栈
2021-12-16
1759浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式大杂烩
2021-12-07
953浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。今天和大家一起看下面对 crash 日志的时候,如何利用 stack 来
嵌入式资讯精选
2021-08-26
1399浏览
程序崩溃时,如何获取函数调用栈信息
一、前言二、Linux 平台三、Windwos 平台一、前言程序在执行过程中 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。因此,程序的日志系统需要侦测这种情况,在代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。这篇文章的理论知识很少,直接分享 2 段代码:在 Linux 和 Windows 这 2 个平台上,如
C语言与CPP编程
2021-06-07
1608浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。正文这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Linux的gcc编译
C语言与CPP编程
2021-05-08
1274浏览
你一定要搞明白的C函数调用方式与栈原理
写在前面的话 这绝对不是标题党。而是C/C++开发中你必须要掌握的基础知识,也是高级技术岗位面试中高频题。我真的真的真的希望无论是学生还是广大C/C++开发者,都该掌握此文中介绍的知识。 正文 这篇blog试图讲明当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的。这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Intel奔腾芯片上Lin
C语言与CPP编程
2021-05-08
2131浏览
C51中函数调用时参数是怎么传递的?
先说一下 首先问一个问题,C51中函数调用时参数是怎么传递的? 你肯定会说是通过堆栈把实参压栈传递的对吧? 不对哦,8051单片机内存十分有限,没有软件堆栈,函数调用不通过堆栈来传递形参,而硬件堆栈空间也十分有限,程序里所有的局部变量以及全局变量都是编译的时候固定存储在某个地址的存储空间的,函数调用的时候就不用压栈了,函数的形参通过存储地址或者寄存器来传递,查了一下: (1)少于3个参数的
嵌入式资讯精选
2021-04-19
1628浏览
C++函数调用过程深入分析
0. 引言 函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。 首先对三个常用的寄存器做一下说明,EIP是指令指针,即指向下一条即将执行的指令的地址;EBP为基址
C语言与CPP编程
2021-04-06
1326浏览
【粉丝问答18】linux下查看函数被那些函数调用过?
欢迎订阅粉丝问答专题,点击下面链接,然后点击订阅: 《粉丝问答》 一、问题 有个打印log的函数,想知道该函数执行的时候,之前执行了哪些函数? 二、分析 在应用程序打印函数栈需要通过函数backtrace(),该函数对应头文件如下: #include <execinfo.h> 1、三个与打印调用栈相关的函数 打印函数栈
一口Linux
2021-03-25
1741浏览
C语言在ARM中函数调用时,栈是如何变化的?
为什么会写篇栈变化的文章?做系统分析的话你肯定遇到过一些crash, oops等棘手问题,一般大家都会用 gdb, objdump 或者 addr2line等工具分析 pc 位置来定位出错的地方。但是这些分析工具背后的本质原理就不见得理解深刻了,而且有的时候面对一系列 backtrace 或者 stack 日志处于懵逼的状态。 今天和大家一起看下面对 crash 日志的时候,如何利用 sta
一口Linux
2021-01-24
2238浏览
正在努力加载更多...
广告
今日
新闻
1
被字节跳动索赔800万的前实习生,获NeurIPS 2024最佳论文奖
2
帕特·基辛格退休:工程师CEO的回归也救不回英特尔?
3
马斯克的病态仇视?再次公开批评激光雷达为“错误的解决方案”
4
中国首个商业航天发射场成功首飞!长征十二号火箭成功发射
5
微芯科技决定暂停申请1.62亿美元的美国芯片法案半导体补贴
6
销量低迷,Microchip宣布关厂裁员,暂停补贴申领……
7
韩国政局震荡,对半导体行业有什么影响?
8
纳芯微:静水流深,玉汝于成,新一轮“卷”周期中的创新者
热门
文章排行
1
各大车企付款周期汇总
一览众车
1794
2
突发!美国再次出手!对中国140家芯片公司重大打击!
集成电路IC
1737
3
美国欲限制140家中国芯片公司,包含多家设备巨头
半导体工艺与设备
1308
4
【完整名单列表】美国再将140家中国半导体企业列入实体名单!
EETOP
828
5
突发!美将140家中国半导体企业列入实体名单,附完整名单及政策细节!
大鱼机器人
724
6
华为Mate70搭载的麒麟9020芯片有多强悍?!
凡亿PCB
491
7
日本一水坝现巨型哥斯拉壁画:预计明年1月底将消失
快科技
472
8
完整名单表:美国再将140家中国半导体企业列入实体名单
智能计算芯世界
383
9
最新禁令来了!140多家中国芯片公司被限制
谈思实验室
375
10
不到5%!国产存储芯片急需突破!全球存储芯片市场“冰火两重天”?
飙叔科技洞察
320
11
大众罢工:九大工厂停产员工挤满总部广场
一览众车
316
12
产业链人士曝华为Mate70系列核心零部件供应商
PCBworld
299
13
美将140家中国半导体企业列入实体名单,附完整名单及政策细节!
射频美学
279
14
索赔800万,字节起诉模型“投毒”实习生~网友:800万只是电费!!!
C语言与CPP编程
278
15
华为Mate70Pro“纯血鸿蒙版”来了!无法兼容安卓!
飙叔科技洞察
270
16
刚刚!美国新限制140家中企!(名单曝光)
中国半导体论坛
261
17
牙膏挤爆!iPhone17八大升级,苹果史无前例的巨变
手机技术资讯
253
18
牙膏挤爆!iPhone17八大升级,苹果史无前例的巨变
快科技
219
19
2024年11月新能源汽车销量排名
一览众车
218
20
彻底疯了!CES不给中国人发签证
集成电路IC
205
21
HBM禁令深度思考
集成电路IC
199
22
美国又拉黑140家中国芯片企业,包括北方华创、拓荆、昇维旭…
芯通社
197
23
突发又来!美国将所有HBM纳入管控,限制24种半导体设备,三种软件
集成电路IC
187
24
比亚迪:明年将推出新一代刀片电池
锂电联盟会长
184
25
小米16首发!高通最强CPU来了,史上最高频率
快科技
174
26
突发!大众汽车出售新疆工厂
谈思汽车
168
27
比亚迪新一代刀片电池曝光:续航更长寿命更强!
快科技
166
28
重磅!紫光展锐UWB芯片曝光
物联传媒
162
29
140家中国半导体公司新登美国“光荣榜”
电子工程世界
162
30
美国芯片清单来了!
芯通社
158
广告
最新
评论
更多>>
不错不错,加油奋力追赶美国的脚步,针对外国的芯片制裁打压,必定国产崛起
洋华Louis
评论文章
2024-12-04
华为大曝光!
电容器(英文:capacitor,又称为condenser)是将电能储存在电场中的被动电子器件。电容器的储能特性可以用电容表示。在电路中邻近的导体之间即存在电容,而电容器是为了增加电路中的电容量而加入的电子器件。
james1982...
评论文章
2024-12-04
数字万用表的8种方法检测方法!
资料
文库
帖子
博文
1
《论系统工程》(第2版,钱学森 著,1988年10月修订版)
2
170中国新能源汽车品牌图谱
3
《工程控制论》(钱学森 著,戴汝为 等 译,科学出版社,1958年)
4
JESD204B协议读书笔记
5
《星际航行概论》(钱学森 著,科学出版社,1963年)
6
《普通高中教科书:数学》(人教A版)选择性必修 第1册 教师教学用书
7
Arduino Nano 和 DHT11 实现 LabVIEW 温湿度采集
8
超声波测距模块官方指南
9
点思DS2730多口快充65-100W适配器
10
《大学数学系自学丛书:微分几何》(1983年)★ 经典
1
《十万个为什么》Excel 问题与答案 得分 比较游戏 规则
2
【东软载波 ES32VF2264 开发板】环境搭建和开箱测评打印数据
3
电流回路示意图,对不对?这样也采不到负载(灯)的电流吧?要怎么更改才能采集到灯头(负载)的电流
4
【东软载波 ES32VF2264 开发板】05 基础功能测试——ADC
5
【Arduino uno教程 】(六)串口通信,发送与接收
6
【Arduino uno教程 】合集
7
【联盛德 W800 Arduino开发板】+Arduino IDE无法通过编译问题详解
8
瞬态电压(静电放电・浪涌)保护器件的特点及应用丨浪拓电子
1
基于TOF微型多区激光传感器在MCU上的AI手势识别
2
比较器检测模拟脉冲说明(四)
3
温度传感器精度的影响因素
4
紫光展锐联合上汽海外发布量产车型,赋能汽车智能化
5
瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示
6
工控板方案中,哪些功能可以通过USB扩展出来?
7
12-2学习笔记
8
简析光耦的基本原理和其在光伏逆变器产品中的重要作用
1
内核同步缘起何处?
2
动态调整合适的输出电压
3
电动汽车或充电桩通信转换器
4
新手在配电箱维护上会有哪些问题
5
电工基础,仪表操作汇总
6
外壳接地,不但没有改善,反而恶化了
7
在FPGA中如何确保AD9361的稳定性能?
8
二极管、三极管、MOS管和IGBT基础知识
9
几种常见的BMS上的Pyrofuse驱动芯片的电源架构
10
USB PCB布局走线设计
在线研讨会
uModule DC/DC稳压器 - 减少热量、增加功率
ADAS系统中采用的MEMS时钟
PLL基础知识及其在时钟系统中的应用
PIC16F13145单片机可配置逻辑模块(CLB)概览
EE直播间
无线前沿新技术与测试技术峰会-线上直播
直播时间:12月05日 09:30
首场直播发布: Keysight AP5000 系列新型高性价比模拟信号源
直播时间:12月06日 10:00
全面掌握功率表应用及校准
直播时间:12月10日 10:00
提升毫米波信号测试精度
直播时间:12月18日 14:00
E聘热招职位
本网页已闲置超过10分钟,按键盘任意键或点击空白处,即可回到网页
X
最新资讯
被字节跳动索赔800万的前实习生,获NeurIPS 2024最佳论文奖
帕特·基辛格退休:工程师CEO的回归也救不回英特尔?
马斯克的病态仇视?再次公开批评激光雷达为“错误的解决方案”
中国首个商业航天发射场成功首飞!长征十二号火箭成功发射
微芯科技决定暂停申请1.62亿美元的美国芯片法案半导体补贴