ARM呼叫標準(ATPC)與函式引數傳遞

2021-10-19 02:38:13 字數 1345 閱讀 1632

atpc (automatic transfer power control)自動發信功率控制。技術的要點是微波發信機的輸出功率在atpc控制範圍內自動跟蹤接收段接收電平的變化而變化

1 暫存器的使用必須滿足下面的規則:

子程式間通過暫存器r0-r3來傳遞引數,這時,暫存器r0-r3可以記作a1-a4。被呼叫的子程式在返回前無需恢復暫存器r0-r3的內容。

在子程式中,使用暫存器r4-r11來儲存區域性變數。這時,暫存器 r4-r11可以記作v1-v8。如果在子程式中使用到了暫存器v1-v8中的某些暫存器,子程式進入時必須儲存這些暫存器的值,在返回前必須恢復這些暫存器的值;對於子程式中沒有用到的暫存器則不必進行這些操作。在thumb程式中,通常只能使用暫存器r4-r7來儲存區域性變數。

暫存器r12用作過程呼叫時的臨時暫存器(用於儲存sp,在函式返回時使用該暫存器出棧,函式返回值), 記作ip。在子程式間的連線**段中常有這種使用規則。

暫存器r13用作資料棧指標,記作sp。在子程式中暫存器r13不能用作其他用途。暫存器sp在進入子程式時的值和退出子程式時的值必須相等。

暫存器r14稱為連線暫存器,記作lr。它用於儲存子程式的返回位址。如果在子程式中儲存了返回位址,暫存器r14則可以用作其他用途。

暫存器r15是程式計數器,記作pc。它不能用作其他用途。

2 atpcs下arm暫存器的命名:

r0 a1 工作暫存器

r1 a2 工作暫存器

r2 a3 工作暫存器

r3 a4 工作暫存器

r4 v1 必須保護;區域性變數暫存器

r5 v2 必須保護;區域性變數暫存器

r6 v3 必須保護;區域性變數暫存器

r7 v4 必須保護;區域性變數暫存器

r8 v5 必須保護;區域性變數暫存器

r9 v6 必須保護;區域性變數暫存器

r10 sl 棧限制

r11 fp 幀指標

r12 ip 指令指標

r13 sp 棧指標

r14 lr 連線暫存器

3 引數的傳遞規則:

根據引數個數是否固定,可以將子程式分為引數個數固定的子程式和引數個數可變的子程式。這兩種子程式的引數傳遞規則是不同的。

引數個數可變的子程式引數傳遞規則

引數個數固定的子程式引數傳遞規則

子程式結果返回規則

ARM核心函式呼叫原理

1 將返回點的位址壓棧 2 修改pc指標,跳轉到目標位址只執行 3 返回時,直接將返回位址從棧中彈出到pc指標,實現函式的返回 對於m3 m4核心,引入了乙個鏈結暫存器lr link register 專門用來儲存函式返回位址。lr本子上相當於乙個深度為1的硬體棧,支援且僅1級函式呼叫。借助lr,核...

python 函式,傳參,呼叫

簡單函式介紹 定義 形參 實參 傳參的4中方式 呼叫 return 1.函式定義 python中函式必須先定義,再使用.寫乙個函式前要空兩行,寫完後再空兩行.pycharm書寫 def 函式名 引數 1 2 2.函式呼叫 函式名 引數 舉例 使用函式完成 1 2 定義函式 def add resul...

QT呼叫python檔案(呼叫函式傳參)

pro檔案中 includepath i e miniconda3 include libs le miniconda3 libs lpython37 include define slots q slots include int main int argc,char ar 設定python檔案路...