[解決済み] asmlinkage」モディファイアは何のためにあるのですか?
2022-02-03 13:44:04
質問
Linuxのシステムコールを実装する関数に使用されると書いてありました。 例えば
asmlinkage long sys_getjiffies( void )
{
return (long)get_jiffies_64();
}
と、関数の引数をすべてスタックで渡すようにコンパイラに指示します。しかし、すでにそうなっているのではないでしょうか?関数の引数は、一般にスタックにのみプッシュして渡される。それとも、ここではレジスタを介して関数引数を渡すことを指しているのだろうか?
解決方法は?
には よくある質問 :
asmlinkageタグについて、もう1つ確認しておきたいことがあります。 この単純な関数が これは#defineで、gccのマジックで コンパイラは、この関数がどのような の引数をレジスタに格納し(一般的な最適化)、CPUの スタックに格納されます。system_call はそのスタックを消費する、という先ほどの主張を思い出してください。 最初の引数であるシステムコール番号と、さらに最大4つの の引数は、実際のシステムコールに渡されます。 この偉業は、単に他の引数(これらは レジスタで渡される)スタック上にある。すべてのシステムコールは asmlinkageタグを使用しているため、すべての引数がスタックに格納されています。 もちろん
sys_ni_syscall
の場合、これは何の違いもない。 なぜならsys_ni_syscall
は引数を取らないが、これは問題である。 他のほとんどのシステムコールでは またasmlinkage
が、他の多くの関数の前に表示されるので、それが何であるかを知っておくべきだと思いました。 のことでした。また、アセンブリファイルから関数を呼び出せるようにするためにも使用されます。
関連
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】ベースポインタとスタックポインタとは一体何でしょうか?これらは何を指しているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み] エラー:整数が期待されるところで集約値が使用された
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?