眾所周知,ARM架構下,函數參數是通過 r0~r4寄存器傳遞的;但是如果參數超過四個,就要借助于棧了。
下面以一個例子說明。

main()的匯編如下:

這個時候(執(zhí)行到箭頭指向的位置),棧的狀態(tài)如下:

函數 func的匯編如下:

此時,棧狀態(tài)如下:
ldr r3, [r11, #4]
上面這一句匯編代碼就是從棧上取回保存的第5個參數的值。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
ARM
+關注
關注
135文章
9498瀏覽量
388393 -
函數
+關注
關注
3文章
4405瀏覽量
66792 -
堆棧
+關注
關注
0文章
183瀏覽量
20416
發(fā)布評論請先 登錄
相關推薦
熱點推薦
linux內核系統(tǒng)調用之參數傳遞
與普通函數一樣,系統(tǒng)調用通常需要一些輸入/輸出參數,這些參數可能包括實際值(即數字)、用戶模式進程地址空間中的變量地址,甚至包括指向用戶模式函數
C函數與匯編函數之間參數及返回值傳遞方法
做了定義,明確了它們在函數中的職責:圖 8AAPCS關于ARM寄存器的定義函數調用時的規(guī)則如下:1. 父函數與子
發(fā)表于 09-30 13:34
ARM函數調用時參數傳遞規(guī)則(轉載),記錄一下
之前在學習如何在C語言中嵌入匯編時有了解到C語言之前的參數調用是使用寄存器R0傳遞第一個參數,R1傳遞
發(fā)表于 03-31 10:44
匯編代碼中對C函數調用時如何進行參數的傳遞以及如何從C函數正確返回呢
行參數的傳遞以及如何從C函數正確返回不同于x86的參數傳遞規(guī)則,ATPCS建議函數的形參不
發(fā)表于 05-07 10:02
高效的C編程之函數調用
指令BL或MOV pc,lr一般只需要6個指令周期(ARM7上)。 在函數的入口和出口使用多寄存器加載/存儲指令LDM和STM(Thumb指令使用PUSH和POP)提高函數體的執(zhí)行效率
發(fā)表于 10-17 16:49
?6次下載
vlookup函數的四個參數含義
VLOOKUP函數是一種用于在Excel中查找和提取數據的功能強大的函數。它的四個參數含義分別是:查找值、查找范圍、返回列索引和區(qū)域或表標志。 首先,讓我們來詳細了解這

ARM架構:函數調用參數超過四個的傳遞方法
評論