既存の 64 ビット値内からメモリ アドレスを抽出する必要があり、このアドレスは 4K 配列を指しています。開始値は次のとおりです。
0x000000030c486000
必要なアドレスはビット 51:12 に格納されているため、次を使用してこれらのビットを抽出します。
address = start >> 12 & 0x0000007FFFFFFFFF
これにより、次のアドレスが残ります。
0x000000000030c486
ただし、私が読んでいるドキュメントには、アドレスに格納されている配列のサイズは 4KB であり、自然に整列されていると記載されています。
自然に整列するということが実際に何を意味するのかについて、私は少し混乱しています。ページ整列のものでは、アドレスは通常「000」で終わることを知っています(ただし、それについては間違っている可能性があります)。
開始値から取得したアドレスの長さはわずか 40 ビットであるため、追加のビットシフト操作を実行してビットを配置し、さらに正しく解釈できるようにする必要があると想定しています。
誰かがこれを行う上でアドバイスを提供できれば、私はそれを感謝します.
ありがとう