__asm__ __volatile__ ("" : : : "memory")
来源:互联网 发布:大淘客和淘宝联盟 编辑:程序博客网 时间:2024/06/07 19:01
1.内存屏障(memory barrier)
#define set_mb(var, value) do { var = value; mb(); } while (0)
#define mb() __asm__ __volatile__ ("" : : : "memory")
1)set_mb(),mb(),barrier()函数追踪到底,就是__asm__ __volatile__("":::"memory"),而这行代码就是内存屏障。
2)__asm__用于指示编译器在此插入汇编语句
3)__volatile__用于告诉编译器,严禁将此处的汇编语句与其它的语句重组合优化。即:原原本本按原来的样子处理这这里的汇编。
4) memory强制gcc编译器假设RAM所有内存单元均被汇编指令修改,这样cpu中的registers和cache中已缓存的内存单元中的数据将作废。cpu将不得不在需要的时候重新读取内存中的数据。这就阻止了cpu又将registers,cache中的数据用于去优化指令,而避免去访问内存。
5)"":::表示这是个空指令。barrier()不用在此插入一条串行化汇编指令。在后文将讨论什么叫串行化指令。
6)__asm__,__volatile__,memory在前面已经解释
- __asm__ __volatile__ ("" : : : "memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")含义
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- 关于__asm__ __volatile__ (“” : : : “memory”)
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")
- __asm__ __volatile__("": : :"memory")含义
- __asm__ __volatile__("": : :"memory")
- 内存屏障(__asm__ __volatile__("": : :"memory"))
- Working of __asm__ __volatile__ (“” : : : “memory”)
- __asm__ __volatile__("":::"memory"),内存屏障(memory barrier)
- mapxtreme6.8 图片显示黑框
- Qt插件机制的学习
- bzr
- flv视频无法播放,显示video not found
- Getting Contiguous Space Currently in the Shared Pool(Oracle10g Tuning Technology)
- __asm__ __volatile__ ("" : : : "memory")
- 怎样当您按下回车键时使您的光标移到下一个文本输入框
- 数据库设计流程
- 今天遇到的很恼火的问题identifier of an instance of jp.co.gecj.ito.model.TIipitomanage was altered from 2 to 1
- 最新服务器测试方法详细解析
- 郁闷???
- POJ 2362 POJ1011解题报告
- GameCanvas.flushGraphics
- AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts错误