2012-02-26 41 views

答えて

1

通常、アセンブリ内に割り込みルーチンの少なくとも一部を書き込むには、にはがあります。これは、多くの場合、割り込みによってプロセッサが特定のメモリ位置にベクトル化し、そのポイントからコードを実行し始めるためです。

あなたのプロセッサは、使用している上位レベルのルーチンの呼び出し規約に従っていない可能性がありますので、それを修正してより高いレベルの割り込み処理コードを呼び出し、割込みをクリアしてシステムを通常の実行に戻すためのより多くのアセンブリコード。例えば、Intelチップでは、割り込みから戻るためにプロセッサにiret命令を実行させる必要があります。高水準言語で標準的な方法でこれを行う方法はありません。

+0

お返事ありがとうございました。私は朝から答えに苦労していた。 – user1165418

2

割り込みハンドラは、常に非常に低レベルの環境で実行を開始します。プログラミング言語ですが、アセンブリには常にシステムライブラリと「ランタイム」と呼ばれるものが必要です。

たとえば、アセンブリ言語外のスタックポインタレジスタを操作することは容易ではありません。

さらに、ABIも障壁です。アプリケーションバイナリインターフェイスは、特にコンテキストの保存と復元のために、割り込み処理では複雑すぎます。

関連する問題