gcc で -S フラグを使用して、メモリの使用方法をよりよく理解するために、C コードからアセンブリ ファイルを作成しました。メイン関数の上部からのアセンブリを次に示します。
main:
mov r1, r4 ; FP = SP
add #2, r4 ; FP += 2
add #llo(-14), r1 ; SP -= 14 ?
mov #llo(-16), r15 ; ???
add r4, r15 ; r15 += FP
add #4, r15
何が起こっているのかを分析しようとしたときに、コメントが寄せられました。私の質問は、#llo
マクロの使用と、スタック上のメモリがどのように使用されているか、そして最後に何が r15 に入るのですか?
コンテキストについては、14 バイト (7 つの 16 ビット ワード) を占める main の先頭にあるスタックに配置される構造体を含む変数があります。私が理解していないのは、#llo
マクロとは何か、r15 は何に使用されているのかということです。r4 がフレーム ポインターで、r1 がスタック ポインターであることはわかっています。