2016-05-01 8 views

答えて

3

GDBで$pc等、ia64$ipため、ARM$pcMIPSSPARCため、x86_64$RIPため、ix86$EIPのためだけの別名である

何?私は$ sp、$ fp、$ psを意味します

どうなっていますか? ix86で、$sp$espの別名である、x86_64にそれは$RSPの別名だ、MIPSにそれは

など、$r29の別名だ$psix86$EFLAGSx86_64の別名です。 MIPSに相当するレジスタがないので、$psはそこにマップされません。

それはマッピングはGDB内部

に行われ、その後どのように異なる名前と同じレジスタであれば、コンパイル時に1対1のマップがあります。

if current target is i*86 
    if the user typed $pc return $eip 
    else if the user typed $fp return $ebp else 
    ... 
else if current target is x86_64 
    if the user typed $pc return $rip 
    else if the user typed $fp return $rbp 
    ... 

(これ:私はおよそポイントはコンパイル時に一対一

に次のようになりますGDB内部文字通りマップは、あり得なかった

実際にどのように実装されているのかは分かりませんが、1対1マッピングの説明だけです)。

+1

そして、他の3つのレジスタはどうですか?私は$ sp、$ fp、$ psを意味します。これらのレジスタはどこにマップされていますか?また、私はコンパイルについてのポイントを1対1で得ることはできませんでした。 – Kaustav

+0

@Kaustav私は答えを更新しました。 –

+0

ありがとうございました。しかし、私は$ fpの別名を忘れたと思います。 – Kaustav

関連する問題