.text
セクションを.globl _start
として定義しているRISCV用の起動アセンブリがあります。_startシンボルはどこに定義されていますか
私はこれが何であるかを知っています。逆アセンブリは私にアドレスを示していますが、定義されている場所はわかりません。リンカースクリプトにはありません。ビルドディレクトリのgrepはさまざまなバイナリファイルに含まれていることを示していますが、定義が見つかりません。
私はこれがファイルのどこかにアーキテクチャの機能として表示されていると推測していますが、誰にでもどこに教えてもらえますか? (これは、すべてのLinux上でRISCV GNUクロスコンパイラを使用して構築されている)
この質問に対する回答には、リンカー、ローダー、およびスタートアップコードの内部の詳細が含まれます。別の言い方をすると、実行時に '_start'のアドレスが割り当てられるので、' grep'を見つけるための定義はありません。 – user3386109
私のベアメタルプロジェクトでは、リンカスクリプトの固定アドレスに '_start'を割り当てます。それ以外の場合、 '_start'が正しい場所にあることを保証することはできません。 – fsasm
'.start'という行は、' .globl _start'指示文と同じソースコードファイル内の '_start'というラベルを定義する行でなければなりません。そうでなければ' .globl _start'指示文は何も役に立ちません。 –