назовите asm sqrtsd под C++

Под визуальным 2012, как я могу назвать sqrtsd asm функцией в проекте C++

Я не могу найти его через Google

что-то как:

double mySqrt(double val)
{
__asm
{
  ...
  sqrstd...
}
}

Править:

в 32-битном способе

2
добавлено отредактировано
Просмотры: 1
de
... и не 64-битная цель
добавлено автор SomeWittyUsername, источник
Что-то как аргумент толчка \r\n называет sqrt , однако you' ll нужно 1. скорректированное имя станд.:: sqrt() , 2. хорошая обучающая программа собрания.
добавлено автор user529758, источник

4 ответы

Почему не использование sqrt функция http://www.cplusplus.com/reference/cmath/sqrt/ который будет портативным?

By default VS 2012 will replace sqrt() by __libm_sse2_sqrt_precise. But if you compile with /fp:fast it will replace by sqrtsd

3
добавлено
Я хотел бы быть уверенным в коде asm, чтобы вызвать у меня может быть требование к __ libm_sse2_sqrt_precise
добавлено автор Guillaume07, источник
Соберите с/fp:fast, чтобы заставить компилятор непосредственно испускать sqrtpd, не используя библиотечную функцию.
добавлено автор Hans Passant, источник

Вы можете или не можете быть в состоянии использовать действующий ассемблер, как другие ответы указали.

Есть, однако так называемый intrinsics для SSE (и MMX и другие):

внутренние функции для MS ПРОТИВ

The one for sqrtsd is _mm_sqrt_sd

Необходимо будет, очевидно, прочитать несколько из других страниц также, чтобы быть в состоянии соединить все это. Intrinsics - рекомендуемый путь Microsoft, чтобы решить это.

2
добавлено

Я думаю, делая это, несколько академическое осуществление, поскольку оно вряд ли будет обладать любым фактическим преимуществом, и довольно вероятно штрафом. Однако:

double mySqrt(double val)
{
    double retu;

    __asm
    {
        sqrtsd xmm1, val
        movsd retu, xmm1
    }
    return retu;
}
2
добавлено
спасибо и действительно с/fp:fast тот же самый asm производится.
добавлено автор Guillaume07, источник

что вы хотите, особенность, которую вы ищете, это называют "встроенным ассемблерным кодом", означая собрание в программе C/C++ в основном, Visual Studio не предлагает хорошей поддержки этого, поскольку x64 укусил платформу, которую это не предлагает этой особенности вообще.

http://www.viva64.com/en/k/0015/

Вы, вероятно, хотите переключиться на лучший компилятор.

0
добавлено