Точная интерпретация встроенного кода сборки?

Мне действительно интересно точное толкование встроенной сборки.
Я в основном знаю, как выглядит встроенная сборка:

__asm__ __volatile__(asms : output: input: clobber);

И ниже пример:

void cpuGetMSR(uint32_t msr, uint32_t *lo, uint32_t *hi)
{
   asm volatile("rdmsr" : "=a"(*lo), "=d"(*hi) : "c"(msr));
}

void cpuSetMSR(uint32_t msr, uint32_t lo, uint32_t hi)
{
   asm volatile("wrmsr" : : "a"(lo), "d"(hi), "c"(msr));
}

У обоих нет части "клобера".

Во-первых, в cpuGetMSR я думаю, что это означает

"Read variable msr and store it %ecx, and write %eax value to *lo, and write %edx value to *hi" 

Это правильная интерпретация? Но куда уходит rdmsr? Мне нужен кто-то, кто может помочь мне интерпретировать cpuGetMSR(), а также cpuSetMsr(). Спасибо

0 ответов

Другие вопросы по тегам