1. ホーム
  2. assembly

[解決済み] アセンブリ命令のトラップは何をするのですか?

2022-02-10 05:22:24

質問内容

" RTFM "

<ブロッククオート

プログラムは、通常、ソフトウェア・トラップを発行します。 オペレーティングシステムがサービスを提供します。一般的な例外ハンドラは オペレーティングシステムは、トラップの理由を判断し、対応する。 を適切に設定します。

アセンブリ命令のtrapは、BASICのTRAPと同じような命令なのでしょうか? 答えはYESのようです。私の結論に賛成ですか、反対ですか?

割り込み禁止」のコードは、私の指示通りです。

noint:
    PUSH r8
    movia r8,0x003b683a # machine code for TRAP
    ldw et,-4(ea) # read instr closest to return
    cmpeq et,et,r8 # compare
    POP r8
    bne et,r0,TrapHandler # if equal, jump to traphandler

更新情報

BASICでは、例えば次のように書くことができます。

10 TRAP 20

で、20 行目をエラー処理用の行にします。

どのように解決するのですか?

BASICでTRAPが何をするのかよくわからないが TRAP リンク先のアセンブラマニュアルにある命令は、オペレーティングシステムが処理できるハードウェア例外を発生させます。

プログラマーがこの命令をコード内で使用する必要はほとんどありません。一般的な使用方法は、デバッガがデバッグ対象のコードの中で停止したい箇所(ブレークポイント)に挿入し、プログラムを実行/継続し、その後に TRAP 命令に到達する。