linuxカーネルのアセンブリコードから呼び出されるC関数を記述する必要があります。アセンブリコードから呼び出されたC関数の記述方法
特別な問題を考慮する必要がありますか?
私は心の中でいくつかを持っていますが、誰もがより多くの詳細を提供することができます
(1)Cでのアセンブリ内の呼び出し元と呼び出し先がよく手を振っていることを確認してください大会
を呼び出します。しかし、どの呼び出し規約を使うべきですか?どのようにしてc関数を宣言し、アセンブリコードで宣言できますか?
(2)を保護レジスタ
いくつかのレジスタが起動する前アセンブリに保存されるべきです。私は大まかに彼らがeax、ecx、edxであることを覚えています。しかし、C関数への呼び出しの前に古い値を参照する必要がなければ、それらを保存する必要はありません。
その他の問題は何ですか?
"Linuxカーネルのアセンブリコードから呼び出されるC関数を記述する必要があります。" - 何を止めているの? –
@MitchWheat具体的には、c関数を宣言するときの "asmlinkage"の正確な使用法はわかりません。私はそれを使用する必要がありますか?他の選択肢はありますか?何が意味ですか? – Infinite
まずはしないようにしてください。 Linuxはいくつかの場所でアセンブリを使用していますが、混乱するのは難しいことです。私はその問題がどのアセンブリコードであるかに依存していると思います。割り込みハンドラの初期段階、または初期起動段階(Cが使用される場所の2つの例)では、2つの異なる動作が実行されます。 – ugoren