36

リンク レジスタとフレーム ポインタが ARM でどのように機能するかを理解しようとしています。私はいくつかのサイトに行ったことがありますが、自分の理解を確認したかったのです。

次のコードがあるとします。

int foo(void)
{
    // ..
    bar();
    // (A)
    // ..
}

int bar(void)
{
    // (B)
    int b1;
    // ..
    // (C)
    baz();
    // (D)
}

int baz(void)
{
    // (E)
    int a;
    int b;
    // (F)
}

そして、foo() を呼び出します。リンク レジスタにはポイント (A) のコードのアドレスが含まれ、フレーム ポインターにはポイント (B) のコードのアドレスが含まれますか? そして、すべてのローカルが宣言された後、スタック ポインターは bar() 内のどこにでもある可能性がありますか?

4

2 に答える 2