众所周知,ARM架构下,函数参数是通过 r0~r4寄存器传递的;但是如果参数超过四个,就要借助于栈了。
下面以一个例子说明。
main()的汇编如下:
这个时候(执行到箭头指向的位置),栈的状态如下:
函数 func的汇编如下:
此时,栈状态如下:
ldr r3, [r11, #4]
上面这一句汇编代码就是从栈上取回保存的第5个参数的值。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
ARM
+关注
关注
134文章
9042浏览量
366734 -
函数
+关注
关注
3文章
4304浏览量
62413 -
堆栈
+关注
关注
0文章
182浏览量
19728
发布评论请先 登录
相关推荐
linux内核系统调用之参数传递
与普通函数一样,系统调用通常需要一些输入/输出参数,这些参数可能包括实际值(即数字)、用户模式进程地址空间中的变量地址,甚至包括指向用户模式函数
高效的C编程之函数调用
指令BL或MOV pc,lr一般只需要6个指令周期(ARM7上)。 在函数的入口和出口使用多寄存器加载/存储指令LDM和STM(Thumb指令使用PUSH和POP)提高函数体的执行效率
发表于 10-17 16:49
•6次下载
vlookup函数的四个参数含义
VLOOKUP函数是一种用于在Excel中查找和提取数据的功能强大的函数。它的四个参数含义分别是:查找值、查找范围、返回列索引和区域或表标志。 首先,让我们来详细了解这
评论