有关c语言函数的参数的问题

c语言函数的参数超过4个为什么会把参数写入内存而不是寄存器呢?这样做有什么好处呢?

请先 登录 后评论

2 个回答

百问网_赵老师
擅长:嵌入式开发

c语言方面问题,网上找资料,还请自行百度。

请先 登录 后评论
百问网-邵老师
擅长:RTOS STM32

你如果说的是ARM处理器的话,那么它规定了主函数main传入的参数能使用的寄存器只有R0~R3,且参数1保存到R0~参数2保存到R1~~参数4保存到R3,如果还有第5个参数,那么就会保存到堆栈;而其它的函数,传入的参数可以灵活的保存到R0~R3,不一定是根据参数顺序依次保存到R0~R3,但是超过4个参数的话其它的参数还是会保存到堆栈。

这是一个规定,在ARM处理器设计的时候就是这样设计的:小于等于4个参数,那么就是写入到R0~R3寄存器,超过4个的话,4个之外的参数保存到堆栈。

请先 登录 后评论
  • 2 关注
  • 0 收藏,82 浏览
  • 旋转小蚂蚁 提出于 2021-11-24 19:37