在mips架构的内核的TLB处理部分中,有一些uasm代码,这是生成汇编而不是使用gcc的另一种方式。
我不知道为什么不编写内联汇编而不是uasm。为什么? uasm有什么优势?
在mips架构的内核的TLB处理部分中,有一些uasm代码,这是生成汇编而不是使用gcc的另一种方式。
我不知道为什么不编写内联汇编而不是uasm。为什么? uasm有什么优势?
在TLB未命中处理程序中,我认为您需要完全控制要使用的指令。 (以确保您仅通过已知的TLB条目访问内存)。仅使用几行特殊指令使用内联汇编,并让GCC将局部变量溢出到栈中(如果未经优化就进行编译),将无法正常工作。
TLB缺失处理程序入口点也不是应以jr $ra
返回的函数。
所以最好的选择是用纯asm编写整个处理程序,而不是尝试确保编译器发出“安全”的实现。
在C源文件中的全局范围内使用asm("")
语句会起作用,但是会使asm变得更加难看,并且使asm难以利用C预处理程序。