眾所周知,ARM架構下,函數參數是通過 r0~r4寄存器傳遞的;但是如果參數超過四個,就要借助于棧了。
下面以一個例子說明。
main()的匯編如下:
這個時候(執行到箭頭指向的位置),棧的狀態如下:
函數 func的匯編如下:
此時,棧狀態如下:
ldr r3, [r11, #4]
上面這一句匯編代碼就是從棧上取回保存的第5個參數的值。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
ARM
+關注
關注
134文章
9046瀏覽量
366818 -
函數
+關注
關注
3文章
4306瀏覽量
62431 -
堆棧
+關注
關注
0文章
182瀏覽量
19732
發布評論請先 登錄
相關推薦
linux內核系統調用之參數傳遞
與普通函數一樣,系統調用通常需要一些輸入/輸出參數,這些參數可能包括實際值(即數字)、用戶模式進程地址空間中的變量地址,甚至包括指向用戶模式函數
高效的C編程之函數調用
指令BL或MOV pc,lr一般只需要6個指令周期(ARM7上)。 在函數的入口和出口使用多寄存器加載/存儲指令LDM和STM(Thumb指令使用PUSH和POP)提高函數體的執行效率
發表于 10-17 16:49
?6次下載
vlookup函數的四個參數含義
VLOOKUP函數是一種用于在Excel中查找和提取數據的功能強大的函數。它的四個參數含義分別是:查找值、查找范圍、返回列索引和區域或表標志。 首先,讓我們來詳細了解這
評論