Atpcs規定中推薦子函數參數最大為

ATPCS(Advanced RISC Machine Procedure Call Standard)是ARM處理器系列的一個呼叫協議,它規定了在ARM架構上編寫的C語言函數的參數傳遞方式和堆棧擺放規則。在ATPCS中,並沒有明確規定子函數(子程式、子例程)的參數最大數量。

然而,ARM處理器通常具有有限的暫存器數量用於傳遞參數和傳回值。在ARMv7架構中,有15個通用暫存器(R0-R14,其中R14用於保存子程式的返回地址),但其中一些暫存器有特定的用途,例如R15用於存儲程式計數器,R13用於保存堆棧指針(SP),R12用於保存子程式的局部變量。

因此,實際上用於傳遞參數的暫存器數量是有限的。在ARMv7架構中,通常使用R0-R3來傳遞第一個至第四個參數,而更多的參數則通過堆棧來傳遞。具體來說,如果參數超過4個,那麼第五個及以後的參數會被壓入堆棧中,從高地址到低地址擺放。

由於堆棧可以擴展到很大的尺寸,因此從理論上講,函數可以接受任意數量的參數,只要代碼可以管理堆棧的擺放和參數的傳遞。但是,由於堆棧的大小有限,實際上函數的參數數量會受到可用堆棧空間的限制。

在實踐中,函數的參數數量通常是有限的,這不僅是因為堆棧空間的限制,還因為過多的參數會降低函數的可用性和可讀性。一般來說,建議保持函數的參數數量盡可能少,並且在必要時使用結構化數據類型來傳遞大量數據。