LINUX.ORG.RU

ASM в С++ программе


0

1

Имеется такой код:

bool Processor::is_set_N_bit_in_EDX(int bit)
{
    register volatile unsigned int func = 1, _eax, _edx, _ecx;
    asm volatile ( "cpuid\n\t" : "=eax" (_eax), "=edx" (_edx), "=ecx" (_ecx) : "eax" (func));
    return ((_edx & (1 << bit)) >> bit);
}

Выдает следующие сообщение об ошибке:

In static member function 'static bool Processor::is_set_N_bit_in_EDX(int)':
error: impossible constraint in 'asm'

Что я не так написал и почему оно ругается ?

«З.Ы. g++ (Gentoo 4.5.2 p1.0, pie-0.4.5) 4.5.2»


Ответ на: комментарий от frey

Не знаю что не так. В упор не вижу ((((

AoD314
() автор топика
Ответ на: комментарий от Doug

Чудно, и чё делать ?




«З.Ы. Пока я мало понимаю что происходит ... (((»

AoD314
() автор топика
Ответ на: комментарий от ttnl

Правильный ответ:

bool Processor::is_set_N_bit_in_EDX(int bit)
{
    register volatile unsigned int func = 1, _eax, _edx, _ecx;
    asm volatile ( "cpuid\n" : "=a" (_eax), "=d" (_edx), "=c" (_ecx) : "a" (func));
    return ((_edx & (1 << bit)) >> bit);
}

AoD314
() автор топика
Ответ на: комментарий от AoD314

Если уж ф-я возвращает bool, достаточно:

return (_edx & (1 << bit));

anon_666
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.