私はyasmを使って簡単なELFプログラムを構築しようとしています。しかし、私はVMAアドレスが0ではなく0x1000から始まるように.TEXTセクションをターゲットにする方法を理解できません。私はSTARTとORGディレクティブを使用しようとしましたが、これらはターゲティング時にのみ有効ですビン、エルフじゃない。これはヤスムでできますか?yasmのELF32セクションの物理アドレスを指定しますか?
2
A
答えて
2
これは一般的なELFオブジェクトでは不可能です。 ELFオブジェクトは、再配置可能なです。つまり、ロード先アドレスはまだ確定していません。通常、再配置を解決して読み込みアドレスを修正するには、リンカーと呼ばれる別のプログラムを使用します。リンカーが使用するロードアドレスと、リンカースクリプトを使用してセクションをどのような順序で配置するかを構成できます。たとえば、COMファイルに適しているとGNUリンカのリンクコードのこの単純なリンカスクリプト:
SECTIONS {
. = 0x0100;
.text : {
*(.text.startup);
*(.text);
}
.data : {
*(.data);
*(.rodata);
}
.bss : {
*(.bss);
}
}
冒頭に. = 0x0100
ラインがアドレス0x100
で次のセクションを配置するようにリンカーに指示します。同様のスクリプトを使用してコードを住所0x1000
に配置することもできます。詳細はthe manualをご参照ください。
関連する問題
- 1. GDB CallStack仮想または物理アドレスを指定しますか?
- 2. MACアドレスがLinux上の物理アドレスか仮想アドレスかを判断します
- 3. 仮想アドレスを物理アドレスに戻してマップします
- 4. リモートIPアドレスと物理アドレスの違い
- 5. GeoLocation UKへの物理アドレス
- 6. 論理アドレスから物理アドレスへの変換
- 7. ページングは、CPUのアドレスポインタの長さでアドレス指定できる物理メモリよりも大きな物理メモリを使用しますか?
- 8. 仮想アドレスを物理アドレスに変換
- 9. コンピュータ内の物理的にアドレス指定されたメモリの量はどうなりますか?
- 10. エラー:オブジェクトファイル内のセクションを指すセクションがアドレスに含まれていません
- 11. 物理アドレスと論理アドレスの間の変換
- 12. 仮想アドレスから物理アドレスへの配列のマッピング
- 13. Javaでオブジェクトの物理アドレスを取得できますか?
- 14. キャッシュメモリを考慮した仮想アドレスから物理アドレスへの変換
- 15. データベースの物理名を指定することはできますか?
- 16. なぜ物理メモリのサイズを超えるヒープサイズを指定できますか?
- 17. 関数ポインタ:物理アドレスまたは仮想アドレス
- 18. Linuxのsk_buffでは、skb-> dataは物理アドレスか仮想アドレスですか?
- 19. 仮想アドレスと物理アドレスの関係についての私の理解は正しいですか?
- 20. 物理アドレスまたは仮想アドレスを使用したメモリ統合?
- 21. Visual Studioはデバッグ中に仮想アドレスまたは物理アドレスを表示しますか?
- 22. QML - 祖先のアドレス指定
- 23. QTableWidget Columsのアドレス指定
- 24. MC8051マイクロコントローラのアドレス指定
- 25. JAVAはディスク内のファイルの物理アドレスを取得できませんか?
- 26. ページ分割 - 仮想アドレス、物理アドレス、マッピング - 考慮事項
- 27. 巨大なページの物理アドレスを取得する方法
- 28. yii管理セクションの設定
- 29. アンドロイドアプリパッケージでカスタムフォルダのアドレスを指定する
- 30. 物理アドレスlinuxに書き込むことができます
これは、カスタムOSのような環境向けに作成されています。私は再配置機能を使用しないようにしています。 ELF形式には、セクションをロードする場所を指定するフィールドがありますが、yasmで指定する方法はありません。リンカースクリプトでldで行うことができますが、ld – Earlz
@Earlzの使用を避けることを望んでいました。リンカーの後、リンカーがすべての再配置を解決するため、再配置は必要ありません。 ELF実行可能ファイルを直接生成できるアセンブラは、リンカを使用せずにはないと思います。 ELFはリンカーと一緒に使用されるため、ほとんど役に立たないでしょう。 – fuz
@Ellzなぜリンカーを使わなくてもいいと思ったのですか?あなたがこれを説明することができれば、おそらくあなたが持つ制限をよりよく理解することができます。 – fuz