1

RTFM

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

アセンブル命令トラップは、BASIC の TRAP 命令に似ていますか? 答えはイエスのようです。私の結論を受け入れるか拒否できますか?

「中断なし」のコードは私の指示に従っています:

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 をエラーを処理する行にします。

4

2 に答える 2

4

BASIC で TRAP が何をするかはわかりませんが、TRAPリンクしたアセンブラー マニュアルの命令は、オペレーティング システムで処理できるハードウェア例外を生成します。

プログラマーがコードでこの命令を使用する必要はほとんどありません。これの典型的な使用法は、停止が必要なポイント (ブレークポイント) でデバッグ中のコードにデバッガーによって挿入され、プログラムを実行/続行し、TRAP命令に到達したら制御を取り戻すことです。

于 2012-11-26T01:18:56.833 に答える
1

ユーザー プロセスは、自発的にオペレーティング システム カーネルに移行して、カーネルがユーザーに代わって何らかの操作を実行するように要求できます。システムコールは、ユーザーレベルから呼び出すことができるカーネルによって提供される任意の手順です。ほとんどのプロセッサは、特別なトラップ命令を使用してシステム コールを実装します。

于 2015-02-11T20:52:36.473 に答える