ARM函數調用時參數傳遞規則

以前在學習如何在C語言中嵌入彙編時有了解到C語言以前的參數調用是使用寄存器web

R0傳遞第一個參數,ide

R1傳遞到第二個..函數

一直到R3傳遞第四個參數.學習

可是 實際上有時可能傳遞的參數很是多,超過8個,或是參數中有浮點數之類,參數也會超過4個寄存器,對於超出的部份並不使用R4,而是使用堆棧的方式.ui

對於ARM體系來講,不一樣語言撰寫的函數之間相互調用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定義了函數呼叫時參數的傳遞規則以及如何從函數返回,關於ATPCS的詳細內容能夠查看ADS1.2 Online Books ——Developer Guide的2.1節。這篇文檔要講的是 彙編代碼中對C函數調用時如何進行參數的傳遞以及如何從C函數正確返回spa

不一樣於x86的參數傳遞規則,ATPCS建議函數的形參不超過4個,若是形參個數少於或等於4,則形參由R0,R1,R2,R3四個寄存器進行傳遞;若形參個數大於4,大於4的部分必須經過堆棧進行傳遞。orm

相關文章
相關標籤/搜索