サブルーチン呼び出し

サブルーチンは、いくつかの引数に基づいてタスクを実行し、必要に応じて結果を返すコードブロックです。原則として、レジスタ R0 ~ R3 を使して引数をサブルーチンに渡し、R0 を使用して結果を呼び出し側に返します。5 つ以上の入力が必要なサブルーチンでは、追加の入力にスタック使用します。

サブルーチンを呼び出すには、リンク付き分岐命令を使用します。構文は以下のとおりです。

    BL  destination

destination にはサブルーチンの最初の命令に付けたラベルを指定するのが一般的です。

destination には、PC 相対式を指定することもできます。

BL 命令は以下を実行します。

サブルーチンコードの実行後、BX LR 命令を使用して復帰できます。

Note

別々にアセンブルまたはコンパイルされたモジュール間の呼び出しは、ARM アーキテクチャ向けプロシージャコール標準で定義されている制約条件や規則に準拠する必要があります。

Example 8 には、2 つの引数の値を加算して、その結果を R0 に返すサブルーチン doadd を示しています。

Example 8. 2 つの引数の加算

        AREA    subrout, CODE, READONLY     ; このコードブロックに名前を付ける
        ENTRY                     ; 最初に実行する命令をマークする
start   MOV     r0, #10           ; パラメータをセットアップする
        MOV     r1, #3
        BL      doadd             ; サブルーチンを呼び出す
stop    MOV     r0, #0x18         ; angel_SWIreason_ReportException
        LDR     r1, =0x20026      ; ADP_Stopped_ApplicationExit
        SVC     #0x123456         ; ARM セミホスティング(以前の SWI)
doadd   ADD     r0, r0, r1        ; サブルーチンコード
        BX      lr                ; サブルーチンから復帰する
        END                       ; ファイルの終わりをマークする

Show/hide関連項目

概念
参照
Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311