硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4433|回复: 2
收起左侧

[有问必答] 请教STM32单片机函数的形参数入栈问题

[复制链接]

13

主题

56

回帖

95

积分

初级会员

积分
95
发表于 2017-4-23 11:20:08 | 显示全部楼层 |阅读模式
请教版主,STM32单片机:


    (1)、如果某个函数形参数为1个整型变量(uint8_t),那么入栈时是否是将该整型变量(uint8_t)凑成uint16_t,压入栈
    (2)、如果某个函数形参数为1个整型变量(uint16_t),那么入栈时是否是将该整型变量(uint16_t)压入栈
    (3)、如果某个函数形参数为1个uint8_t array[125]的整型数组,那么入栈时是否是将该数组的125个元素分别凑成uint16_t,然后压入栈
    (4)、如果某个函数形参数为1个uint16_t array[125]的整型数组,那么入栈时是否是将该数组的125个元素压入栈
    (5)、如果某个函数形参数为1个指向字符串的指针,那么入栈时是否是将该指向字符串的指针的首地址压入栈


     我的理解对吗?请指教
            

  
我是新手,请多多关照。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2017-4-23 11:56:23 | 显示全部楼层
(1 )(2)
对于这两个,一种情况是不需要压栈的,形参可以直接存入到寄存器里面。

(3)(4)
形参不会是整个数组的,仅需记录数组地址。

(5)
这种也是,直接存入到寄存器里面。


总之:
一般情况下函数的形参是直接使用的 CPU 寄存器,不需要使用栈空间,但是这个函
数中如果还嵌套了一个函数的话,这个存储了函数形参的 CPU 寄存器内容是要入栈的。
回复

使用道具 举报

13

主题

56

回帖

95

积分

初级会员

积分
95
 楼主| 发表于 2017-4-23 16:52:52 | 显示全部楼层

回 eric2013 的帖子

eric2013:(1 )(2)
对于这两个,一种情况是不需要压栈的,形参可以直接存入到寄存器里面。

(3)(4)
形参不会是整个数组的,仅需记录数组地址。
....... (2017-04-23 11:56) 
谢谢
我是新手,请多多关照。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 13:47 , Processed in 0.037608 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表