0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

如意 ? 來(lái)源:CSDN ? 作者:CaspianSea ? 2020-06-22 14:36 ? 次閱讀

眾所周知,ARM架構(gòu)下,函數(shù)參數(shù)是通過(guò) r0~r4寄存器傳遞的;但是如果參數(shù)超過(guò)四個(gè),就要借助于棧了。

下面以一個(gè)例子說(shuō)明。

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

main()的匯編如下:

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

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

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

函數(shù) func的匯編如下:

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

此時(shí),棧狀態(tài)如下:

ldr r3, [r11, #4]

上面這一句匯編代碼就是從棧上取回保存的第5個(gè)參數(shù)的值。

ARM架構(gòu):函數(shù)調(diào)用參數(shù)超過(guò)四個(gè)的傳遞方法

聲明:本文內(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
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9097

    瀏覽量

    367608
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62631
  • 堆棧
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19763
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C函數(shù)調(diào)用機(jī)制與棧幀原理詳解

    當(dāng)一個(gè)C函數(shù)調(diào)用時(shí),函數(shù)參數(shù)如何傳遞、堆棧指針如何變化、棧幀是如何被建立以及如何被消除的,一
    發(fā)表于 06-08 10:49 ?1345次閱讀
    C<b class='flag-5'>函數(shù)</b><b class='flag-5'>調(diào)用</b>機(jī)制與棧幀原理詳解

    linux內(nèi)核系統(tǒng)調(diào)用參數(shù)傳遞

    與普通函數(shù)一樣,系統(tǒng)調(diào)用通常需要一些輸入/輸出參數(shù),這些參數(shù)可能包括實(shí)際值(即數(shù)字)、用戶模式進(jìn)程地址空間中的變量地址,甚至包括指向用戶模式函數(shù)
    的頭像 發(fā)表于 12-20 09:32 ?1632次閱讀

    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次下載
    java<b class='flag-5'>方法</b><b class='flag-5'>參數(shù)</b><b class='flag-5'>傳遞</b>簡(jiǎn)析

    高效的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次下載
    高效的C編程之<b class='flag-5'>函數(shù)</b><b class='flag-5'>調(diào)用</b>

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

    參數(shù)傳遞,是在程序運(yùn)行過(guò)程中,實(shí)際參數(shù)就會(huì)將參數(shù)傳遞給相應(yīng)的形式參數(shù),然后在
    的頭像 發(fā)表于 03-02 11:41 ?7344次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>參數(shù)</b><b class='flag-5'>傳遞</b>的原理

    C語(yǔ)言函數(shù)調(diào)用的形式及過(guò)程

    C語(yǔ)言函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞調(diào)用有參函數(shù)時(shí),主調(diào)函數(shù)和被調(diào)
    的頭像 發(fā)表于 03-10 14:28 ?1781次閱讀

    網(wǎng)絡(luò)系統(tǒng)調(diào)用網(wǎng)絡(luò)套接字入口函數(shù)

    調(diào)用的應(yīng)用層接口函數(shù),第二個(gè)參數(shù)是一個(gè)指針,指向具體被調(diào)用
    的頭像 發(fā)表于 07-24 11:02 ?477次閱讀

    Arm64程序調(diào)用通用寄存器的使用方法

    下面是Arm64程序調(diào)用標(biāo)準(zhǔn)規(guī)定的通用寄存器的使用方法。 參數(shù)寄存器(X0-X7) 函數(shù)參數(shù)數(shù)量
    的頭像 發(fā)表于 07-28 11:28 ?2674次閱讀
    <b class='flag-5'>Arm</b>64程序<b class='flag-5'>調(diào)用</b>通用寄存器的使用<b class='flag-5'>方法</b>

    vlookup函數(shù)四個(gè)參數(shù)含義

    VLOOKUP函數(shù)是一種用于在Excel中查找和提取數(shù)據(jù)的功能強(qiáng)大的函數(shù)。它的四個(gè)參數(shù)含義分別是:查找值、查找范圍、返回列索引和區(qū)域或表標(biāo)志。 首先,讓我們來(lái)詳細(xì)了解這
    的頭像 發(fā)表于 12-01 09:57 ?7132次閱讀