usermode x64には、コンパイラからの明示的なインストルメンテーションなしに、各メモリのロードとストアで境界チェックを自動的に適用するための仕組みはありますか?私はOSのサポート(例えばmprotectシステムコール)に頼ることも望まない。自動境界チェックのためのx86-64メカニズム
<begin: enforce all accesses within 0x10000000-0x10000100> ... mov ___, ___ #hardware automatically performs range check ... <end enforcement>
私の知る限りでは、インテルMPXは、各メモリアクセスをチェックする前に、明示的なbndcl/bndcu命令が必要です。 CPUは境界がどこかから来ているしているもの水晶玉や情報ていないという単純な理由のために
デバッガのように悪いアドレスを間接的に参照しようとすると、信号を処理できます。しかし、私はこれが愚かであることを保証します –
どのような範囲で、単に「有効なメモリ」または「それが存在するはずのオブジェクトの中に」ですか? – harold
私は上下の仮想アドレスを計算する方法を持っており、保護されたコードにその範囲内でのアクセスのみを強制したいと考えています。 – rsinha