Xcode 4.5中的端口asm

时间:2012-12-09 00:24:00

标签: assembly xcode4.5

希望有人可以帮助我解决这个问题。 我从来没有学过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_:
     );

我在开始和结束的每一行都试过引号。不要工作。

1 个答案:

答案 0 :(得分: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"
 );