博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
invlpg 指令简单介绍
阅读量:6074 次
发布时间:2019-06-20

本文共 953 字,大约阅读时间需要 3 分钟。

invlpg 指令简单介绍

                  

voidtlb_invalidate(pde_t *pgdir, void *va){	// Flush the entry only if we're modifying the current address space.	// For now, there is only one address space, so always invalidate.	invlpg(va);}
遇到这样一段code...然后invlpg是个什么东东

这是个C的嵌入汇编

内嵌汇编语法例如以下:

__asm__(

汇编语句模板:
输出部分:
输入部分:
破坏描写叙述部分);
即格式为 asm ( "statements" : output_regs : input_regs : clobbered_regs);

共四个部分:汇编语句模板,输出部分,输入部分,破坏描写叙述部分,各部分使用“:”格开,汇编语句模板不可缺少,其它三部分可选,假设使用了后面的部分,而前面部分为空,
也须要用“:”格开,对应部分内容为空。

这段嵌入式汇编是没有输出的.把addr读入到寄存器中去(这里r指定随意经常使用寄存器),%0则指向addr所在的寄存器

处理器使用TLBTranslation Lookaside Buffer)来缓存线性地址到物理地址的映射关系。

实际的地址转换过程中,处理器首先依据线性地址查找TLB,假设未发现该线性地址到物理地址的映射关系(TLB miss)。将依据页表中的映射关系填充TLBTLB fill),然后再进行地址转换。

tlb_invalidate(pde_t *pgdir, void *va)
这里函数的目的就是取消va相应物理页之间的关联。相当于刷新TLB。每次我们调整虚拟页和物理页之间的映射关系的时候,我们都要刷新TLB。调用这个函数或invlpg汇编指令

程序的凝视也讲了

// Flush the entry only if we're modifying the current address space.

// For now, there is only one address space, so always invalidate.

你可能感兴趣的文章
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>
linux系列博文---->深入理解linux启动运行原理(一)
查看>>
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
想说一点东西。。。。
查看>>
css知多少(8)——float上篇
查看>>
NLB网路负载均衡管理器详解
查看>>