内联汇编代码的精确解释?

时间:2015-04-09 10:28:47

标签: assembly cpu inline-assembly cpu-registers msr

我真的很想知道内联装配的确切解释 我基本上知道内联装配的样子:

__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));
}

两者都没有'clobber'部分。

首先,在cpuGetMSR中,我认为这意味着

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

这是正确的解释吗?但是rdmsr去了哪里?我需要能帮助我解释cpuGetMSR()以及cpuSetMsr()的人。感谢

0 个答案:

没有答案