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
被調(diào)用函數(shù)(子函數(shù))必須執(zhí)行以下任務(wù):
size of all local variables + max = constant
max 參數(shù)用于指定放置在每次調(diào)用的參數(shù)塊中的所有參數(shù)的大小。
通過這種方式,調(diào)用方可以用睿智的方式告知被調(diào)用函數(shù)從哪里返回結(jié)構(gòu)體。例如,在語句 s = f(x) 中,其中 s 是一個(gè)結(jié)構(gòu)體,f 是一個(gè)返回結(jié)構(gòu)體的函數(shù),調(diào)用方只需將 s 的地址作為第一個(gè)參數(shù)傳遞并調(diào)用 f。然后,函數(shù) f 將返回結(jié)構(gòu)體直接復(fù)制到 s 中,并自動(dòng)執(zhí)行賦值。
無論是在調(diào)用函數(shù)時(shí)(使調(diào)用方正確設(shè)置第一個(gè)參數(shù))還是聲明函數(shù)時(shí)(以便函數(shù)知道復(fù)制結(jié)果),都必須注意正確地聲明接受結(jié)構(gòu)體參數(shù)的函數(shù)。
下述示例是被調(diào)用函數(shù)如何響應(yīng)調(diào)用的典型示例:
; 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