眾所周知,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ù)的值。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
ARM
+關(guān)注
關(guān)注
135文章
9553瀏覽量
391874 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4417瀏覽量
67504 -
堆棧
+關(guān)注
關(guān)注
0文章
183瀏覽量
20524
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
C函數(shù)調(diào)用機(jī)制與棧幀原理詳解
當(dāng)一個(gè)C函數(shù)被調(diào)用時(shí),函數(shù)的參數(shù)如何傳遞、堆棧指針如何變化、棧幀是如何被建立以及如何被消除的,一
發(fā)表于 06-08 10:49
?2614次閱讀
linux內(nèi)核系統(tǒng)調(diào)用之參數(shù)傳遞
與普通函數(shù)一樣,系統(tǒng)調(diào)用通常需要一些輸入/輸出參數(shù),這些參數(shù)可能包括實(shí)際值(即數(shù)字)、用戶模式進(jìn)程地址空間中的變量地址,甚至包括指向用戶模式函數(shù)
C函數(shù)與匯編函數(shù)之間參數(shù)及返回值傳遞方法
做了定義,明確了它們?cè)?b class='flag-5'>函數(shù)中的職責(zé):圖 8AAPCS關(guān)于ARM寄存器的定義函數(shù)調(diào)用時(shí)的規(guī)則如下:1. 父函數(shù)與子
發(fā)表于 09-30 13:34
ARM函數(shù)調(diào)用時(shí)參數(shù)傳遞規(guī)則(轉(zhuǎn)載),記錄一下
之前在學(xué)習(xí)如何在C語(yǔ)言中嵌入?yún)R編時(shí)有了解到C語(yǔ)言之前的參數(shù)調(diào)用是使用寄存器R0傳遞第一個(gè)參數(shù),R1傳遞
發(fā)表于 03-31 10:44
ARM系統(tǒng)在函數(shù)調(diào)用的時(shí)候參數(shù)是通過(guò)哪種方式傳遞的
中斷與異常有何區(qū)別?ARM系統(tǒng)在函數(shù)調(diào)用的時(shí)候參數(shù)是通過(guò)哪種方式傳遞的?
發(fā)表于 12-24 06:21
ARM函數(shù)調(diào)用過(guò)程說(shuō)明
ARM函數(shù)調(diào)用默認(rèn)4個(gè)參數(shù)用R0-R4傳遞,大于4個(gè)
發(fā)表于 04-26 10:05
匯編代碼中對(duì)C函數(shù)調(diào)用時(shí)如何進(jìn)行參數(shù)的傳遞以及如何從C函數(shù)正確返回呢
行參數(shù)的傳遞以及如何從C函數(shù)正確返回不同于x86的參數(shù)傳遞規(guī)則,ATPCS建議函數(shù)的形參不
發(fā)表于 05-07 10:02
matlab自定義函數(shù)調(diào)用的方法
matlab自定義函數(shù)調(diào)用的方法
命令文件/函數(shù)文件+ 函數(shù)文件 - 多
發(fā)表于 11-29 13:14
?88次下載
java方法參數(shù)傳遞簡(jiǎn)析
參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是該對(duì)象的引用一個(gè)副本。指向同一個(gè)對(duì)象,對(duì)象的內(nèi)容可以在被
發(fā)表于 09-27 17:03
?0次下載
高效的C編程之函數(shù)調(diào)用
指令BL或MOV pc,lr一般只需要6個(gè)指令周期(ARM7上)。 在函數(shù)的入口和出口使用多寄存器加載/存儲(chǔ)指令LDM和STM(Thumb指令使用PUSH和POP)提高函數(shù)體的執(zhí)行效率
發(fā)表于 10-17 16:49
?6次下載
函數(shù)參數(shù)傳遞的原理
參數(shù)傳遞,是在程序運(yùn)行過(guò)程中,實(shí)際參數(shù)就會(huì)將參數(shù)值傳遞給相應(yīng)的形式參數(shù),然后在
C語(yǔ)言函數(shù)調(diào)用的形式及過(guò)程
C語(yǔ)言函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞
在調(diào)用有參函數(shù)時(shí),主調(diào)函數(shù)和被調(diào)
網(wǎng)絡(luò)系統(tǒng)調(diào)用網(wǎng)絡(luò)套接字入口函數(shù)
調(diào)用的應(yīng)用層接口函數(shù),第二個(gè)參數(shù)是一個(gè)指針,指向具體被調(diào)用函
Arm64程序調(diào)用通用寄存器的使用方法
下面是Arm64程序調(diào)用標(biāo)準(zhǔn)規(guī)定的通用寄存器的使用方法。 參數(shù)寄存器(X0-X7) 函數(shù)參數(shù)數(shù)量
vlookup函數(shù)的四個(gè)參數(shù)含義
VLOOKUP函數(shù)是一種用于在Excel中查找和提取數(shù)據(jù)的功能強(qiáng)大的函數(shù)。它的四個(gè)參數(shù)含義分別是:查找值、查找范圍、返回列索引和區(qū)域或表標(biāo)志。 首先,讓我們來(lái)詳細(xì)了解這
ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法
評(píng)論