在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM-Thumb 過(guò)程調(diào)用標(biāo)準(zhǔn)

            ARM-Thumb 過(guò)程調(diào)用標(biāo)準(zhǔn)

            作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
            寄存器

            ATPCS 指定用于特殊用途的寄存器
            - 使用寄存器 r0-r3 將參數(shù)值傳送到函數(shù),并將結(jié)果值傳出??梢杂?a1-a4 來(lái)引用 r0-r3,以使此用法透明。請(qǐng)參閱第 3-9 頁(yè)的參數(shù)傳遞。在子程序調(diào)用之間,可以將 r0-r3 用于任何用途。被調(diào)用函數(shù)在返回之前不必恢復(fù) r0-r3。
            如果調(diào)用函數(shù)需要再次使用 r0-r3 的內(nèi)容,則它必須保留這些內(nèi)容。
            - 使用寄存器 r4-r11 存放函數(shù)的局部變量??梢杂?v1-v8 來(lái)引用這些寄存器,以使此用法透明。在 Thumb 狀態(tài)下,在大多數(shù)指令中只有寄存器 r4-r7 可以用于局部變量。
            如果被調(diào)用函數(shù)使用了這些寄存器,它在返回之前必須恢復(fù)這些寄存器的值。
            - 寄存器 r12 是內(nèi)部調(diào)用暫時(shí)寄存器 ip。它在過(guò)程鏈接膠合代碼(例如,交互操作膠合代碼)中用于此角色。在過(guò)程調(diào)用之間,可以將它用于任何用途。被調(diào)用函數(shù)在返回之前不必恢復(fù) r12。
            - 寄存器 r13 是棧指針 sp。它不能用于任何其它用途。sp 中存放的值在退出被調(diào)用函數(shù)時(shí)必須與進(jìn)入時(shí)的值相同。
            - 寄存器 r14 是鏈接寄存器 lr。如果您保存了返回地址,則可以在調(diào)用之間將 r14 用于其它用途。
            - 寄存器 r15 是程序計(jì)數(shù)器 PC。它不能用于任何其它用途。

            本文引用地址:http://www.biyoush.com/article/201611/316971.htm

            生成匯編程序語(yǔ)言時(shí),編譯程序使用特定名稱和基本寄存器名。
            另外,s0-s31、d0-d15 和 f0-f31 是浮點(diǎn)協(xié)處理器中寄存器的預(yù)定義名稱。

            ATPCS 中的寄存器角色和名稱
            寄存器同義詞特定名稱過(guò)程調(diào)用標(biāo)準(zhǔn)中的角色
            r15-PC程序計(jì)數(shù)器
            r14-lr鏈接寄存器
            r13-sp棧指針
            r12-ip內(nèi)部過(guò)程調(diào)用暫時(shí)寄存器
            r11v8-ARM 狀態(tài)變量寄存器 8
            r10v7sl

            ARM 狀態(tài)變量寄存器 7

            棧檢查變體中的棧限制指針

            r9v6sb

            ARM 狀態(tài)變量寄存器 6

            RWPI 變體中的靜態(tài)基址

            r8v5-ARM 狀態(tài)變量寄存器 5
            r7v4-變量寄存器 4
            r6v3-變量寄存器 3
            r5v2-變量寄存器 2
            r4v1-變量寄存器 1
            r3a4-自變量/結(jié)果/ 暫時(shí)寄存器 4
            r2a3-自變量/結(jié)果/ 暫時(shí)寄存器 3
            r1a2-自變量/結(jié)果/ 暫時(shí)寄存器 2
            r0a1-自變量/結(jié)果/ 暫時(shí)寄存器 1

            參數(shù)傳遞
            有可變個(gè)數(shù)自變量的函數(shù)是 variadic。有固定個(gè)數(shù)自變量的函數(shù)是 nonvariadic。
            向 variadic 和 nonvariadic 函數(shù)傳遞參數(shù)有不同的規(guī)則。
            Nonvariadic 函數(shù)
            參數(shù)值以下列方式傳遞到 nonvariadic 函數(shù):
            1. 前面的整型自變量按順序分配給 r0-r3
            2. 其余參數(shù)按順序分配給棧

            長(zhǎng)整數(shù)分配
            超過(guò) 32 位的整型參數(shù)(例如,long long 型)有 8 字節(jié)對(duì)齊。傳遞 long long 型
            參數(shù)時(shí),將它分配給寄存器 r2 和 r3,或者分配給棧。
            浮點(diǎn)數(shù)分配
            如果系統(tǒng)有浮點(diǎn)硬件,則 FP 參數(shù)如下列方式分配給 FP 寄存器:
            1. 按次序檢查每個(gè) FP 參數(shù)。
            2. 對(duì)于每個(gè)參數(shù),檢查可用的 FP 寄存器組。
            3. 如果有一個(gè)可用,則將編號(hào)最低、尺寸適合于參數(shù)的相鄰 FP 寄存器組分配給參數(shù)。

            Variadic 函數(shù)
            參數(shù)值在整型寄存器 a1-a4 中、必要時(shí)在棧中傳遞到 variadic 函數(shù)(a1-a4 是 r0-r3的同義詞)。
            使用的字順序如同參數(shù)值存儲(chǔ)在連續(xù)內(nèi)存字中,然后傳輸?shù)剑?br />1. a1-a4,首先是 a1。
            2. 棧,首先是最低地址。(這表示它們以相反的順序推入棧中。)

            結(jié)果返回
            函數(shù)可以:
            - 在 a1 中返回單字整型值。
            - 在 a1-a2、a1-a3 或 a1-a4 中返回雙字或四字整型值。
            - 在 f0、d0 或 s0 中返回浮點(diǎn)值。
            - 在 f0-fN 或 d0-dN 中返回復(fù)合浮點(diǎn)值(如 complex)。N 的最大值取決于所選的浮點(diǎn)結(jié)構(gòu)(請(qǐng)參閱第 3-17 頁(yè)的浮點(diǎn)選項(xiàng))。
            - 較長(zhǎng)的值必須在內(nèi)存中間接返回。



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉