問題タブ [position-independent-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
120 参照

gcc - 動的ライブラリのソース コードを位置に依存しないコードでコンパイルする必要があるのはなぜですか?

位置に依存しないコードとその動的ライブラリの使用法について、私は非常に混乱しています。

GCCの -fPIC オプションに関するこの良い例を見つけました: GCC -fPIC オプション と、それがどのように機能するかを理解します。

ただし、動的ライブラリが特定のアドレスに依存しないコードを必要とする理由を理解するのに苦労しています。動的ライブラリが読み込まれると、絶対アドレス (ライブラリ内の関数のアドレスなど) を保存して使用できないのはなぜですか? この場合、相対アドレスの使用が必須になるのはなぜですか?

int main() { return 0; }「gcc main.c」でコンパイルされた単純なプログラムは、常に位置に依存しますか?

0 投票する
0 に答える
37 参照

assembly - nasm: "symbol rip is undefined" - "rip" レジスタに対して lea-instruction を使用する方法は?

NASMで命令を使用したいのですlea rax, [rip + 0x1020304]が、その使用が許可されていないようですrip

GAS (GNU Assembler) では、数字と記号の両方に対してこの構文を使用できます ( x86-64 GAS Intel 構文の "[RIP + _a]" などの RIP 相対変数参照はどのように機能しますか? )。NASMでこれを達成するにはどうすればよいですか?

0 投票する
0 に答える
17 参照

gcc - GCC での PIC の作成とアップロード

MCU によって動的にロードされる位置に依存しないコードを作成したいとします。

GCC では PIC をコンパイルできますが、最終的なバイナリ出力を取得するプロセスが何であるかはわかりません。

明確にするために、自己完結型(グローバル変数なし)のC関数を実装したとします。MCU に別の RTOS があり、この機能をダウンロードして特定のアドレスで実行します。

この関数をコンパイルし、バイナリ イメージを MCU にアップロードするプロセスはどのようなものですか? この場合、リンカー スクリプトはどのようになりますか?