Если вы пишете приложение, которое очень чувствительно к задержке, каковы ограничения для встраивания ассемблера в функции С++ (и обычное использование вызовов функций С++), например:
inline __int64 GetCpuClocks()
{
// Counter
struct { int32 low, high; } counter;
// Use RDTSC instruction to get clocks count
__asm push EAX
__asm push EDX
__asm __emit 0fh __asm __emit 031h // RDTSC
__asm mov counter.low, EAX
__asm mov counter.high, EDX
__asm pop EDX
__asm pop EAX
// Return result
return *(__int64 *)(&counter);
}
(Вышеупомянутая функция пришла из другого сообщения SO, которое я видел)
Можно ли рассматривать встроенные в ассемблер функции как черный ящик? Могли бы вы легко получить результат вычислений, выполненных на ассемблере? Есть ли опасность, что вы не знаете, какие переменные в данный момент находятся в регистрах и т. д.? Создает ли это больше проблем, чем решает, или это приемлемо для конкретных небольших задач?
(Предположим, что ваша архитектура будет исправлена и известна)
РЕДАКТИРОВАТЬ Я только что нашел это, вот на что я намекаю:
https://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-CC
EDIT2 Это больше нацелено на Linux и x86 - это просто общий вопрос С++/ассемблера (или я так думал).