タグ付きポインターの実際の使用例は何ですか?[閉まっている]


8

タグ付きポインターの実際の使用例は何ですか?

これは主に、小さな64ビットシステムと、64ビットワードポインターの可能な使用法について読んだことが原因です。

私の理解では、タグ付きポインターは、特定のアーキテクチャーで可能なアドレス空間がはるかに小さいため、ビットで追加情報を含むことができるアドレスです。

しかし、些細な場合を超えてタグ付きポインタを使用することは可能ですか?クールなアイデア/例はありますか?

タグ付きポインターを介して64ビットポインターを利用する一般的なライブラリ、フレームワークはありますか?すべてのハードウェアでそれは可能ですか?


5
Lispは頻繁にタグ付きポインタを使用して、整数とbignumをシームレスに切り替えます。1つのタグでアドレスはintとして解釈され、別のタグでbignumへのポインタとして解釈されます。
Patrick

2
タグ付けされたポインタのいくつかの実際の使用法:*はMac OS X 10.7でのObjective-Cランタイム- mikeash.com/pyblog/... * ARM64上のiOS 7でのObjective-Cランタイム- mikeash.com/pyblog/friday-qa-2013- 09-27-arm64-and-you.html
nobody

もちろん、反対票...コメントはありません。
auselen

1
この質問は投票ベースの質問であるため、トピックから外れているようです。特定の回答を他のどの回答よりも際立たせる基準は提供されていません。

これは「データ構造の概念」ではないのですか?(programmers.stackexchange.com/help/on-topic)hmm ...
auselen

回答:


4

critbitトライライブラリは、タグ付きポインターを使用して、トライの内部ノードと外部ノードを区別します。新しいノードが特定の値に整列して割り当てられるようにすることで、アドレスの下位ビットの一部がゼロであることが保証されます。その数は、必要な整列に依存します。次に、これらのビットに他の情報を保存できます...クリティカルビットノードの場合、ノードが外部(リーフ)の場合、LSBが設定されます。アドレスを使用する場合は、タグを解除することを忘れないでください。

ノード構造に余分なメンバー変数があることを節約します。


レイトレーシングに使用されるkdツリーでも同じトリックが使用されます-Wald et al。子ポインターの下位2ビットが常にゼロになるようにノードを整列させ、それらのビットを使用して分割平面を格納します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.