6.6.2. アセンブリ言語を使用した SVC ハンドラ

要求された SVC 番号のハンドラを呼び出す最も簡単な方法は、ジャンプテーブルを使用する方法です。r0 に SVC 番号が含まれている場合、Example 6.6 に示したトップレベルハンドラの BIC 命令に続けて、Example 6.7 のコードを挿入できます。

Example 6.7. SVC ジャンプテーブル

    CMP    r0,#MaxSVC          ; Range check
    LDRLS  pc, [pc,r0,LSL #2]
    B      SVCOutOfRange
SVCJumpTable
    DCD    SVCnum0
    DCD    SVCnum1
                    ; DCD for each of other SVC routines
SVCnum0             ; SVC number 0 code
    B    EndofSVC
SVCnum1             ; SVC number 1 code
    B    EndofSVC
                    ; Rest of SVC handling code
                    ;
EndofSVC
                    ; Return execution to top level
                    ; SVC handler so as to restore
                    ; registers and return to program.
Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential