最近,Visual C++ のことを高機能なマクロアセンブラだと思っている光成です.
その考えを64bit Windows/Linuxにも押し進めるため,64bitに対応したJITアセンブラXbyakを公開しました.
64bit Visual Studioではインラインアセンブラが廃止されたため,何かと便利になるのではないかと思います.
ところでWikipediaのAMD64などには64bit Windowsに関して
64ビットアプリケーションではx87命令・MMX命令及び3DNow!命令をサポートしない(x87レジスタをコンテキストスイッチの際にセーブしない)
という記述があるのですが,試したところちゃんとセーブされているようです.
テスト方法
test_mmx.cppをコンパイルして(binary)
コマンドプロンプトを二つ開いて
test_mmx 1 test_mmx 3
と実行します.それぞれスレッドを起動して,1, 2, 3, 4という数値が表示され続けました.
もしMMXレジスタがコンテクストスイッチで保存されていなければ全て同じものになるはずなので,保存されていると推測されます.
Legacy Floating-Point Supportにも
The MMX and floating-point stack registers (MM0-MM7/ST0-ST7) are preserved across context switches
とあるので保存されているように思われます.
一つ気になるのは私がテストしたのは32bit WindowsのVMware上の64bit Xpだったという点です.素の64bit環境でテストした場合どうなるかどなたか試していただけますでしょうか.
追記
奥さんから英語版Wikipediaには使えると書いてますよという情報をいただきました.
#見るの忘れてました.迂闊だった….