0

コードはすべて正常に機能しましたが、巻き戻しデータを作成するためのディレクティブを追加すると、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_frameVSYASMは、関数ラベルの再定義について不平を言います。これは、おそらく、ディレクティブとして認識されなかったことを意味します。それはまた言いますerror: unrecognized directive 'alloc_stack'そして同じですsave_xmm128。について文句はありませんendprolog

角かっこで囲むproc_frameと最初のエラーはなくなりますが(ラベルの再定義)、マニュアルには角かっこなしで使用するように記載されており、とにかく問題は解決しません。

これを修正するにはどうすればよいですか?できれば、適切な巻き戻しデータを作成する方法で。

4

1 に答える 1

1

ラベルを定義していると思うPROC_FRAMEので、行は必要ありませんs24_fl32_sse2_win64:-これも私が見たいくつかの例global s24_fl32_sse2_win64の後にありますPROC_FRAME-これが必要かどうかはわかりません。

さらに、-alloc_stackおよびsave_xmm128(角括弧なし)はマクロです(スタック操作自体と関連するアンワインドプリミティブの両方を処理します)-これらのアンワインドプリミティブバージョンは[allocstack ....]および[savexmm128....]です。

于 2013-02-11T10:57:12.653 に答える