作者origo (令人期待的新生命)
看板LinuxDev
标题[问题] Function中的参数在bootloader中是放在哪里呢?
时间Tue Dec 29 15:17:24 2009
我想请问一下,
在Android的bootloader中,
它最後会用entry( 0, board_machine(), ATAG);
来跳到decompress的head.S中,
并看到head.S里会注解r1暂存器里有machine_number,
r2里有ATAG位置,
但就我印像中, function的参数不是放在stack中吗?
怎会直接放在cpu的r1,r2里呢?
请问各位强者有人可以帮忙解释一下吗?
谢谢
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.88.200
1F:→ james732:function的参数是可以放在stack或register里的 12/29 15:24
2F:→ origo:请问那要如何选择要放在stack还是register里呢?谢谢 12/29 17:53
3F:→ SILee:没有办法 12/29 18:04
4F:→ SILee:ARM预设就是放r0~r3这4个register 12/29 18:05
5F:→ SILee:除非参数超过4个才会放stack 12/29 18:06
6F:→ SILee:不然你就要从asm自己写或去改compiler 12/29 18:07
7F:→ freesamael:ABI calling convention,这也是为什麽EABI和OABI不相容 12/29 18:48
8F:推 zwai:r0~r2是固定的 12/29 23:35
9F:→ origo:谢谢,各位的回答, 基本上我了解了, 我会再查看看ABI的东西 12/30 10:26
10F:→ origo:但如果参数传递的是struct,其大小大於reg的话,不就放不下吗 12/30 10:27