コードはすべて正常に機能しましたが、巻き戻しデータを作成するためのディレクティブを追加すると、YASMはコードのアセンブルを拒否し始めました。
自動生成されたコマンドラインの「-fx64」で証明されているように、ビルド設定はx64用です。"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\"vsyasm.exe -Xvc -f x64 -o "x64\Debug\\" -l "" -P "" --mapdir= "" -E "" --prefix "" --suffix "" -rnasm -pnasm -m amd64
通常、-m
スイッチはそこにありませんが、私はそれを適切に追加しました。それは役に立ちませんでした。
-f
スイッチの引数をに変更しても、次のwin64
いずれにも役立ちません。"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\"vsyasm.exe -Xvc -f win64 -o "x64\Debug\\" -l "" -P "" --mapdir= "" -E "" --prefix "" --suffix "" -rnasm -pnasm -m amd64
このコードでは、
bits 64
global s24_fl32_sse2_win64
s24_fl32_sse2_win64:
proc_frame s24_fl32_sse2_win64
sub rsp, 8 + 4 * 16
[alloc_stack 8 + 4 * 16]
movdqa [rsp], xmm6
[save_xmm128 xmm6, 0]
[endprolog]
proc_frame
VSYASMは、関数ラベルの再定義について不平を言います。これは、おそらく、ディレクティブとして認識されなかったことを意味します。それはまた言いますerror: unrecognized directive 'alloc_stack'
そして同じですsave_xmm128
。について文句はありませんendprolog
。
角かっこで囲むproc_frame
と最初のエラーはなくなりますが(ラベルの再定義)、マニュアルには角かっこなしで使用するように記載されており、とにかく問題は解決しません。
これを修正するにはどうすればよいですか?できれば、適切な巻き戻しデータを作成する方法で。