眾所周知,ARM架構(gòu)下,函數(shù)參數(shù)是通過(guò) r0~r4寄存器傳遞的;但是如果參數(shù)超過(guò)四個(gè),就要借助于棧了。
下面以一個(gè)例子說(shuō)明。
main()的匯編如下:
這個(gè)時(shí)候(執(zhí)行到箭頭指向的位置),棧的狀態(tài)如下:
函數(shù) func的匯編如下:
此時(shí),棧狀態(tài)如下:
ldr r3, [r11, #4]
上面這一句匯編代碼就是從棧上取回保存的第5個(gè)參數(shù)的值。
-
ARM
+關(guān)注
關(guān)注
134文章
9307瀏覽量
375003 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4370瀏覽量
64193 -
堆棧
+關(guān)注
關(guān)注
0文章
183瀏覽量
20038
發(fā)布評(píng)論請(qǐng)先 登錄
C函數(shù)調(diào)用機(jī)制與棧幀原理詳解

linux內(nèi)核系統(tǒng)調(diào)用之參數(shù)傳遞
C函數(shù)與匯編函數(shù)之間參數(shù)及返回值傳遞方法
ARM函數(shù)調(diào)用時(shí)參數(shù)傳遞規(guī)則(轉(zhuǎn)載),記錄一下
ARM系統(tǒng)在函數(shù)調(diào)用的時(shí)候參數(shù)是通過(guò)哪種方式傳遞的
ARM函數(shù)調(diào)用過(guò)程說(shuō)明
匯編代碼中對(duì)C函數(shù)調(diào)用時(shí)如何進(jìn)行參數(shù)的傳遞以及如何從C函數(shù)正確返回呢
matlab自定義函數(shù)調(diào)用的方法
java方法參數(shù)傳遞簡(jiǎn)析

高效的C編程之函數(shù)調(diào)用

函數(shù)參數(shù)傳遞的原理

C語(yǔ)言函數(shù)調(diào)用的形式及過(guò)程
網(wǎng)絡(luò)系統(tǒng)調(diào)用網(wǎng)絡(luò)套接字入口函數(shù)
Arm64程序調(diào)用通用寄存器的使用方法

評(píng)論