2016-03-22 9 views
-2

私は単純な武器の例をいくつか解体することを覚えています。地元の人々はstackではなくregistersに格納されているようです。これは常に腕に当てはまりますか?Arm Cortexアーキテクチャのローカル変数は、レジスタまたはスタックに格納されていますか?

+2

地元の人々は何百人ですか?ありそうもないと思われる.... –

+1

普通のコンパイラとABIがあれば、汎用レジスタを持っているものは普通だ。それはちょっとのポイントです... – Notlikethat

+1

あなたは変数のアドレスを取る必要がある場合? @EugeneSh。 –

答えて

4

一方、他方、または両方。 Jon Skeetのタイプ、値、番号、サイズ、アーキテクチャ、登録数、無料登録、月の相、Jon Skeetが今朝出てきたものに依存します。

+0

質問の1つは、もし私がupvote(正解)またはdownvote(助けにならない)であるべきかどうか分からない。 – Olaf

+0

私は 'calling convention'を忘れています:( –

+1

OPが木星昇順で生まれ、Gallifrey(うまくいけば - 違反なし)などで生まれた場合など、たくさんのことを忘れました。 – Olaf

3

ローカル変数の格納は、具体的にプロセッサアーキテクチャではなくコンパイラにとって重要です。さらに、コンパイラの最適化が有効になっているときは、レジスタ記憶域を使用する可能性が高くなります。

すべてのコンパイラはどのアーキテクチャでもこれを実行する可能性がありますが、x86と比べてARMはより大きな直交性の高いレジスタセットを持っているため、おそらくARMコードのレジスタ記憶域を観察する可能性が高くなります。

もちろん、多数の変数があり、大きな集計タイプの場合でもスタックは引き続き使用されます。オプティマイザは、最適なパフォーマンスを得るために、コードフローを分析し、どの変数がレジスタに最適に格納されるかを選択します。

関連する問題