問題タブ [relocation]

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 投票する
8 に答える
1960 参照

memory-management - 関数が毎回同じメモリアドレスから実行されるのはなぜですか?

実行可能ファイルを逆アセンブルしています:

メモリ アドレスが同じであるたびに: 0x004012d0.

メモリアドレスはOSによって動的に割り当てられるのではないですか?

アップデート

これは仮想空間であり、一部のプラットフォームではランダム化できることがわかりました。

誰かが変更するgdbダンプを投稿できますか?

0 投票する
2 に答える
10959 参照

linker - NASM x86_64 の Relocation Truncated to Fit エラー

Intel Core 2 CPU と 2GB の RAM を搭載したコンピューターを使用しています。私のOSはUbuntu 9.04です。このコードをコンパイルしようとすると:

このコード「NASM -f bin UARTLOOP.asm」をコンパイルすると、コンパイラはエラーなしで UARTLOOP.o ファイルを作成できます。.o ファイルを「ld UARTLOOP.o」とリンクしようとすると、次のように表示されます。

この問題を解決するためのアイデアはありますか? Thx =)

アップデート

の出力nasm -hfは次のとおりです。

使用法: nasm [-@ 応答ファイル] [-o 出力ファイル] [-f フォーマット] [-l リストファイル] [オプション...] [--] ファイル名または nasm -v バージョン情報

0 投票する
2 に答える
734 参照

android - SomeActivity を拡張して onCreateOptionsMenu などを再配置する方法は?

これはかなり単純なはずですが、とにかくわかりません。かなり長くなっ
た Activity ( XyActivityと呼びましょう) があります。したがって、いくつかのオーバーライドされたメソッドをサブクラスに再配置したいと思います (それをXyOptionsと呼びましょう)。そのように見えます:

残念ながら、XyOptionsのメソッドは呼び出されません。そして、私には理由がわかりません。答えは些細なことだと確信しているので、何か方向性を教えてください。

ありがとう、
ステフ

0 投票する
4 に答える
69223 参照

c++ - リンカーは何をしますか?

私はいつも疑問に思っていました。コンパイラがあなたが書いたコードをバイナリに変換することは知っていますが、リンカは何をしますか? 彼らはいつも私にとって謎でした。

「リンク」とは何かを大まかに理解しています。ライブラリとフレームワークへの参照がバイナリに追加されるときです。それ以上のことはわかりません。私にとって、それは「うまくいく」だけです。動的リンクの基本も理解していますが、深すぎることはありません。

誰かが用語を説明できますか?

0 投票する
2 に答える
2418 参照

c - メイン関数が常に同じアドレスにロードされるのに対し、変数はほとんどの場合異なるアドレスを持つのはどうしてですか?

私は今日この小さなプログラムを書きました、そして私はその結果に驚かされました。これがプログラムです

私のマシンでは、メイン関数は常にアドレス「0x80483d4」にロードされ、変数のアドレスは変化し続けます。これはどのように発生しますか?私は、仮想化スキームの一部として、OSが命令のアドレスを再配置し続けるオペレーティングシステムを読みました。では、なぜこのプログラムを実行するたびに、メインが同じアドレスにロードされるのですか?

よろしくお願いします。

0 投票する
2 に答える
2623 参照

c++ - DOPを適用し、優れたユーザーインターフェイスを維持するにはどうすればよいですか?

現在、コンソール用に3Dエンジンを少し最適化したいと思っています。より正確には、キャッシュをより使いやすくし、構造をよりデータ指向に調整したいだけでなく、優れたユーザーインターフェイスを維持したいと考えています。

例えば:

したがって、ユーザーは自分のコードでインターフェイスポインターを操作できます。

しかし
、私のエンジンには現在、シーンノードへのポインタを格納しています。

したがって、データ指向の設計では、構造体の配列ではなく、配列の構造体を使用することをお勧めします。だから私のノードはから取得します...

これに...

したがって、DOPを適用する場合、ここで2つの問題が発生します。まず、ユーザーがIDやインデックスなどを操作しなくても、優れたユーザーインターフェイスを維持するにはどうすればよいでしょうか。

次に、一部のベクトルのサイズが変更されたときに、ユーザーインターフェイスポインターがニルヴァーナを指さないようにした場合に、プロパティの再配置を処理するにはどうすればよいですか?

現在の私の考えは、永続的な「ポインタ」のハンドルを取得する一種のhandle_vectorを実装することです。

したがって、インターンstd :: vectorのサイズが変更されると、ハンドルが更新されます。「ハンドル」は実際のオブジェクトへのポインタを格納し、「->」演算子は適切なラッピングを実現するためにオーバーロードされます。しかし、このアプローチは私には非常に複雑に聞こえますか?!

どう思いますか?優れたインターフェイスを維持しながら、キャッシュの使用率を高めるためにメモリ内で連続して考える方法はありますか?

助けてくれてありがとう!

0 投票する
3 に答える
5316 参照

memory-management - セグメントの静的再配置または静的再配置の意味

elf 形式の実行可能ファイルには、コード、データ、bss、スタックなどのさまざまなセグメントが含まれています。セグメント xyz が静的に再配置されるとしたら、それはどういう意味ですか?

elf 形式のバイナリには、各セグメントの相対アドレスが含まれています。静的に再配置されたということは、相対アドレスが実際には物理アドレスであることを意味するのでしょうか?

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

gcc - 64ビットプラットフォームでのELFオブジェクトファイルのサイズ制限は何ですか?

x8664およびLinuxプラットフォームを想定します。

ELFヘッダーを調べると、オフセットはすべて64ビットです。

したがって、relocatoin R_X86_64_64を使用して、4Gより大きいオブジェクトファイルを簡単に作成できます。これは、静的.oファイルと実行可能ファイルが64ビットで表現できる最大値になる可能性があることを意味します。

ただし、gccのような共有ライブラリの場合、R_X86_64_PLT32の再配置しかありません。つまり、4GBを超える共有ライブラリを作成することは不可能ですよね?

したがって、巨大なプログラムを構築したい場合、.oファイルの1つが十分に巨大(> 4GB)である場合、唯一の選択肢は静的リンクですか?

コメントは大歓迎です。

ありがとう、リミ

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

svn - Subversion SVN: リポジトリが移動されました リポジトリが永久に XXX に移動されました 再配置してください

私は今SVNを理解していません。ファイルを変更して更新しようとすると、次のエラーが表示されます。

私の知る限り、リポジトリのアドレスなどを変更していません。他のクライアントにも同じエラーがあるため、svn クライアントではなく、リポジトリに問題があるようです。助言がありますか?私のリポジトリのアドレスは「/var/svn/repository」です。これは、Apache-Config 内の Location-tag です。

そして、これは私のリポジトリの構造です:

アップデート:

作業コピー内で svn info コマンドを実行すると、次の結果が得られます。

0 投票する
2 に答える
4559 参照

arm - 再配置可能なコードを使用した静的ローカル変数の問題

ベアメタルに再配置可能なコードを持つプロジェクトを構築しています。Cortex M3 組み込みアプリケーションです。私はダイナミック リンカを持っておらず、スタートアップ コードにすべての再配置を実装しました。

ほとんどの場合は機能していますが、ローカルの静的変数が正しく配置されていないようです。それらのアドレスは、実行可能ファイルがメモリ内でオフセットされる量だけオフセットされます。つまり、メモリ位置 0 にロードされているかのようにコードをコンパイルしますが、実際には 0x8000 にあるメモリにロードします。静的ローカル変数のメモリ アドレス オフセットは 0x8000 です。これは適切ではありません。

私のグローバル変数はGOTによって適切に配置されていますが、静的ローカル変数はGOTにまったくありません(少なくとも、実行時に表示されませんreadelf -r)。私は自分のコードをコンパイルしており-fpic、リンカは指定されています。静的ローカル変数にGOTを使用する ように指示するか、それらに絶対アドレス指定を使用するように指示するコンパイルおよび/またはリンクオプションが欠落しているに違いないと思います。-fpic-piegcc

現在、コードは静的ローカル変数の場所に PC を追加しているようです。