我真的很想知道内联汇编的确切解释。
我基本上知道内联汇编的样子:
__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() 的人。谢谢