Как получить eflags, используя только с - PullRequest
2 голосов
/ 16 октября 2010

Интересно, как я могу получить eflags зарегистрировать контент, используя только c, без каких-либо вставок _asm.Возможно ли это?

Ответы [ 2 ]

4 голосов
/ 16 октября 2010

Нет, это невозможно в стандартном C без _asm, если у вас нет компилятора C с каким-то весьма специфичным для него способом.

0 голосов
/ 16 октября 2010

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

#define GET_FLAGS(X) asm volatile ("pushfl;\
                                    popl %%eax;       \
                                    movl %%eax, %0;"  \
                                    :"=m" (X)         \
                                    ); 

uint32_t getFlags() {
    uint32_t flags;
    GET_FLAGS(flags);

    return flags;
}

Конечно, это сильно зависит от архитектуры.Здесь очень низкая мобильность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...