1

誰かがこれで私を助けてくれることを願っています。私は ASM を学んだことがないので、このスニペットでは何もできません。しかし、処理に必要であり、うまく機能しました(以前はVC++プログラミングに使用したコードスニペットの一部でしたが、現在はXcode 4.5を使用しています)、正確にどのように機能するかわかりません。

引用符を設定する必要があるといういくつかの投稿を読みました。しかしここで?

    asm(
    fld newVal
    fabs
    fcom oldMax
    fstsw ax
    sahf
    jna else_
    fstp oldMax; // |newVal| > oldMax; pop to oldMax
    jmp endif_
else_:
    ffree st(0)
endif_:
     );

最初と最後に、すべての行で引用符を試しました。仕事しないでください。

4

1 に答える 1

2

asmは Visual Studio の構文であり、GCC と Clang__asm__はアセンブリ言語に使用されます。コードも Intel 構文のようです。GCC は通常、AT&T と呼ばれるわずかに異なる構文を使用します。詳細については、GCC ASM の how to を参照してください。

このようなものは、開始するのに適した場所です。

__asm__(
"fld %0\n"
"fabs\n"
"fcom %1\n"
"fstsw %%ax\n"
"sahf\n"
"jna 1f\n"
"fstp %1 ; |newVal| > oldMax; pop to oldMax\n"
"jmp 2f\n"
"1:\n"
"ffree %%st0\n"
"2:\n"
 : "=r"(newVal)
 : "r"(oldMax)
 : "%st0"
 );
于 2012-12-09T00:40:23.137 に答える