Ошибка компиляции исходного кода Android: невозможное ограничение в «asm»

Для моего проекта я должны использовать встроенные инструкции по сборке такие как RDTSC рассчитать время выполнения инструкции Android 4.3 C ++ в стек. Я нашел похожую проблему в стеке потока, таких как 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 но ни один из них не решает проблему, которая у меня есть.

Я использовал следующий код:

{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t0 = ((unsigned long)a) | (((unsigned long)d) << 32);}
//The C++ statement to measure its execution time
{unsigned a, d;asm volatile("rdtsc" : "=a" (a), "=d" (d)); t1 = ((unsigned long)a) | (((unsigned long)d) << 32);}
time = (t1-t0)/2-20;

Но я получаю сообщение об ошибке:

ошибка: невозможное ограничение в ‘asm’

Моя среда сборки:

  • Ubuntu 14.04.5 LTS
  • Android 4.3
  • GCC 4.8.5
  • G ++ 4.8.5
  • Цель: x86_64-linux-gnu

Я пробовал приведенный выше код в отдельной программе C (в той же среде) и он работает нормально без проблем, но как только я встраиваю приведенный выше код в исходный код Android, я получаю сообщение об ошибке.

Моя цель:

Я создаю образ для эмулятора Android qemu на платформе x86_64-linux-gnu.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …