3

entry_32.Sから呼び出される関数を定義したいと思います。実際のシステムコール処理関数が呼び出される直前に呼び出されます。

関数呼び出しとパラメーター受け渡しのオーバーヘッドを回避するために、my_fooを次のように宣言できますか?

   fastcall inline int my_foo (int n);

    /*in entry_32.S*/
    pushl %eax
    CFI_ADJUST_CFA_OFFSET 4
    SAVE_ALL
    ....
/* My code begins*/
    call my_foo
    cmpl $0, %eax
    jne syscall_wrong
    movl PT_ORIG_EAX(%esp), %eax
/* My code ends */
    call *sys_call_table(,%eax,4)
4

1 に答える 1

0

コンパイラは C コードの関数をインライン化できますが (inlineキーワードがあるかどうかに関係なく)、アセンブラはそれほどスマートではありません。アセンブリで記述したものは、まさにアセンブルされるものであり、最適化 (インライン化など) はまったくありません。

于 2012-04-09T04:31:10.183 に答える