ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
被調用函數(子函數)必須執行以下任務:
size of all local variables + max = constant
max 參數用于指定放置在每次調用的參數塊中的所有參數的大小。
通過這種方式,調用方可以用睿智的方式告知被調用函數從哪里返回結構體。例如,在語句 s = f(x) 中,其中 s 是一個結構體,f 是一個返回結構體的函數,調用方只需將 s 的地址作為第一個參數傳遞并調用 f。然后,函數 f 將返回結構體直接復制到 s 中,并自動執行賦值。
無論是在調用函數時(使調用方正確設置第一個參數)還是聲明函數時(以便函數知道復制結果),都必須注意正確地聲明接受結構體參數的函數。
下述示例是被調用函數如何響應調用的典型示例:
; called function entry point
STMFD SP!, {V1, V2, V3, LR} ; save V1, V2, V3, and LR
SUB SP, SP, #16 ; allocate frame
... ; body of the function
ADD SP, SP, #16 ; deallocate frame
LDMFD SP!, {V1, V2, V3, PC} ; restore V1, V2, V3, and store LR
; in the PC, causing a return