<xdim が必要となる背景について> Windowsの仮想アドレス区間内に確保されるメモリ領域には「保護属性」というも のが付けられていて、これには、主に読み取り・書き込み、実行の3つの属性があ ります(他にもいくつかあります)。 例えば、読み取り属性を持たない領域のデ ータを読み取ることはできないようになっています。 この機能のためには、ハードウェア(CPU)がこのような仕様に対応している(つ まり、読み取り属性を持たない領域から読み取ろうとした場合にCPUが例外を発生 させる機能を持っている)必要があります。これまでのCPUは、読み取り・書き込 み属性についてはこの機能を持っていたのですが、 実行属性についてはサポート されていませんでした。 そのため、これまでは実行属性を読み取り属性とを同じ ものとして扱っていて、 読み取り属性があればその領域にあるマシン語コードを 実行することが可能になっていたのです。ところが、 セキュリティ等の問題から 実行属性をサポートした CPUが新しく出てくることになり、Windows XP SP2 から は、それに対応するということになったということです。 現在のHSPでは、変数の領域には読み取りおよび書き込み属性がありますが、実行 属性はつけられていません。したがって、マシン語を使用している多くのHSPスク リプトは、上述の新しいCPUを搭載したマシンでは実行させることができなくなっ てしまいます。(まだSP2が出ておらず、現行のマシン上で動くのかどうかは分か りません。私は動くと思っていますが。) 今後のWindows環境でもマシン語コードを使用したスクリプトが正しく動くように するため、 マシン語コードを格納するための変数領域はこの xdim 命令を用いて 確保するようにしてください。