[解決済み] 着信側セーブレジスタ、発信側セーブレジスタとは何ですか?
質問内容
呼び出し側と呼び出し側のセーブレジスタの違いと、いつ何を使えばいいのかがわからず困っています。
私はMSP430を使用しています。 :
の手順で行います。
mov.w #0,R7
mov.w #0,R6
add.w R6,R7
inc.w R6
cmp.w R12,R6
jl l$loop
mov.w R7,R12
ret
上記のコードはcalleeであり、教科書の例で使用されたものなので、慣習に従ったものです。R6とR7はcallee savedで、R12はcaller savedです。私の理解では、callee savedのREGは、プロシージャの中で値を変えてもプロシージャの外の値には影響しないという意味で、quot;global"ではないのだと思います。このため、最初に新しい値をcalleeのregに保存する必要があります。
R12、保存された呼び出し元は、言葉は悪いですが、"global"です。プロシージャが行うことは、呼び出し後のR12に永続的な影響を及ぼします。
私の理解は正しいのでしょうか?他に見落としていることはありますか?
どのように解決するのですか?
<ブロッククオート呼び出し側で保存されるレジスタ (別名 揮発性 を登録するか、または コールクローバ ) は、一時的に保持する必要のある量を保持するために使用されます。 は呼び出しをまたいで保存されることはありません。
そのため、これらのレジスタをスタックにプッシュするか、どこか別の場所にコピーするのは呼び出し側の責任となります もし この値をプロシージャ呼び出し後に復元したい。
を持たせるのは普通です。
call
は、これらのレジスタの一時的な値を破壊しますが。
コールセーブレジスタ (別名 不揮発性 レジスター、または コールプリザーブド ) は、長寿命の値を保持するために使用されます。 呼び出しにまたがって保存される。
呼び出し側がプロシージャを呼び出すとき、呼び出し側が戻った後もこれらのレジスタが同じ値を保持することを期待できます。したがって、呼び出し側の責任として、呼び出し側に戻る前にレジスタを保存して復元する必要があります。 あるいは、触らないことです。
関連
-
[解決済み】andiとoriはこのプログラムで何をするのですか?
-
[解決済み】MIPSで整数の絶対値?
-
[解決済み] error A2022: 命令オペランドは同じサイズでなければなりません。
-
[解決済み] 018Hと0cHは、アセンブリでは何の略ですか?具体的には「cH」と「0」「h」のプリフィックス/ポストフィックス
-
[解決済み] アセンブリ - CMP後のJG/JNLE/JL/JNGE
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] 未解決のシンボルが残る コードコンポーザースタジオ
-
[解決済み] アセンブリ言語 jeジャンプ機能
-
[解決済み] ワードptrとは何ですか?
-
[解決済み] LC3 LEA 命令と格納された値
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】x86アセンブリ。AT&Tの構文で「subl」コマンドはどのように動作するのか
-
[解決済み】アセンブリJLEのjmp命令例
-
[解決済み] MIPS: スタックポインタ($sp)とスタックの関連した使用法
-
[解決済み] Binary Bomb Phase_6 Node Order?
-
[解決済み] MIPS分岐実行順序(beqz)
-
[解決済み] アセンブリで文字列の長さを表示する方法
-
[解決済み] アセンブリMIPS。配列の初期化および合計
-
[解決済み] ループ内で配列の個々の要素にアクセスするにはどうしたらよいですか?
-
[解決済み] x86アセンブリでレジスタに使用されるpush/pop命令の機能は何ですか?
-
[解決済み] i386およびx86-64におけるUNIXおよびLinuxシステムコール(およびユーザースペースファンクション)の呼び出し規約は?