ARM参数传递,第一个参数是数组,还放寄存器里吗?

[复制链接]
2207|2
 楼主| quarticarm 发表于 2012-3-20 14:28 | 显示全部楼层 |阅读模式
ARM参数传递,第一个参数是数组,还放寄存器里吗?如果:
int fun(int a[100],int ,int ,char)怎么放 ?第一个参数就100个数组了

还有请问,如果A函数调用B函数,B函数返回了 返回到A函数的哪里?是下一条语句吗?如果从汇编的角度怎么看,谢谢
xinzha 发表于 2012-3-20 17:55 | 显示全部楼层
第一个问题跟arm还是其他cpu关系不大,看编译器的处理,这么大的数组一般情况下编译器是把指针传过去了。
第二个问题跟体系结构相关,因为arm不是纯粹的risc流水线架构,所以在arm中是返回到调用后面的第一条指令。而在mips这类纯risc中会有延迟槽的概念,一般返回地址在调用后面的第二条指令。

评分

参与人数 1威望 +2 收起 理由
john_lee + 2 我很赞同

查看全部评分

john_lee 发表于 2012-3-20 20:52 | 显示全部楼层
对于数组作为参数,编译器一定会使用“传地址调用”的方式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部