作者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