繁体   English   中英

有人可以解释以下代码语句吗?

[英]Can someone explain the following code statement?

有人可以解释以下陈述吗?

static inline void cpu_write_dtlb(uint32_t vpn, unsigned attr)
{
    asm volatile ("wdtlb  %1, %0; dsync\n" :: "r" (vpn), "r" (attr));
}

如果您的问题与语法有关,那就是GCC内联汇编语言语法。 特别是, %0%1被GCC存储"r"变量的寄存器替换。

volatile关键字具有以下作用:

如果GCC的优化程序确定不需要输出变量,则有时会丢弃asm语句。 同样,如果优化器认为代码将始终返回相同的结果(即,其输入值在两次调用之间均不变),则可以将代码移出循环。 使用volatile限定词将禁用这些优化。 没有输出操作数的asm语句(包括asm goto语句)是隐式volatile

有关此扩展语法的详细信息,请参见带有C表达式操作数的扩展Asm-汇编程序指令的GCC文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM