【问题标题】:what is the advantage about mips uasm codemips uasm代码有什么优势
【发布时间】:2020-03-09 07:07:06
【问题描述】:
在mips架构的内核TLB处理部分,有一些uasm代码,这是另一种生成程序集的方式,而不是使用gcc。
我不知道为什么不写内联汇编而不是uasm。为什么? uasm有什么优势?
【问题讨论】:
标签:
assembly
linux-kernel
kernel
mips
inline-assembly
【解决方案1】:
在 TLB 未命中处理程序中,我认为您需要完全控制所使用的指令。 (确保您仅通过已知存在的 TLB 条目访问内存)。仅对一些特殊指令使用内联 asm,并让 GCC 将局部变量溢出到堆栈中(如果编译时没有优化),是行不通的。
TLB-miss 处理程序入口点也不是应该返回 jr $ra 的函数。
所以最好的办法是用纯 asm 编写整个处理程序,而不是试图确保编译器发出一个“安全”的实现。
在 C 源文件内的全局范围内使用 asm("") 语句会起作用,但会使 asm 更难看,并使 asm 更难利用 C 预处理器。