Pour mon projet Je dois utiliser les instructions d'assemblage en ligne telles que rdtsc pour calculer le temps d'exécution de certaines instructions C/C++.Existe-t-il une instruction équivalente à rdtsc dans ARM?
Le code suivant semble fonctionner sur Intel, mais pas sur les processeurs ARM:
{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;
Ma question est:
Comment écrire un code assembleur en ligne similaire à la ci-dessus (à calculer le temps écoulé d'exécution d'une instruction) pour travailler sur les processeurs ARM?
'rdtsc' sur les processeurs multi-coeurs peut avoir des problèmes. voir https://msdn.microsoft.com/en-us/library/ee417693(VS.85).aspx –
Les instructions uniques auront des horaires variables basés sur le cache, etc. Mieux vaut boucler des milliers de fois dessus et utiliser le perf_events() fonctionnalité commune pour le faire fonctionner sur tous les processeurs pris en charge. – BitBank