pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

“鎖"有什么作用?x86匯編中的指令是什么意思

What does the quot;lockquot; instruction mean in x86 assembly?(“鎖有什么作用?x86匯編中的指令是什么意思?)
本文介紹了“鎖"有什么作用?x86匯編中的指令是什么意思?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我在 Qt 的源代碼中看到了一些 x86 程序集:

I saw some x86 assembly in Qt's source:

q_atomic_increment:
    movl 4(%esp), %ecx
    lock 
    incl (%ecx)
    mov $0,%eax
    setne %al
    ret

    .align 4,0x90
    .type q_atomic_increment,@function
    .size   q_atomic_increment,.-q_atomic_increment

  1. 通過谷歌搜索,我知道lock指令會導致CPU鎖定總線,但我不知道CPU何時釋放總線?

  1. From Googling, I knew lock instruction will cause CPU to lock the bus, but I don't know when CPU frees the bus?

關(guān)于上面的整個代碼,我不明白這段代碼是如何實現(xiàn)Add的?

About the whole above code, I don't understand how this code implements the Add?

推薦答案

  1. LOCK 本身不是一條指令:它是一個指令前綴,適用于后面的指令.該指令必須是對內(nèi)存(INCXCHG、CMPXCHG 等)執(zhí)行讀-修改-寫操作的指令——在此如果是 incl (%ecx) 指令,inclong 字修改為 ecx注冊.

  1. LOCK is not an instruction itself: it is an instruction prefix, which applies to the following instruction. That instruction must be something that does a read-modify-write on memory (INC, XCHG, CMPXCHG etc.) --- in this case it is the incl (%ecx) instruction which increments the long word at the address held in the ecx register.

LOCK 前綴確保 CPU 在操作期間擁有適當緩存行的獨占所有權(quán),并提供某些額外的排序保證.這可以通過斷言總線鎖定來實現(xiàn),但 CPU 將在可能的情況下避免這種情況.如果總線被鎖定,那么它只是在鎖定指令的持續(xù)時間內(nèi).

The LOCK prefix ensures that the CPU has exclusive ownership of the appropriate cache line for the duration of the operation, and provides certain additional ordering guarantees. This may be achieved by asserting a bus lock, but the CPU will avoid this where possible. If the bus is locked then it is only for the duration of the locked instruction.

這段代碼將要遞增的變量的地址從堆棧復制到ecx寄存器中,然后它以原子方式執(zhí)行lock incl (%ecx)將該變量加 1.如果變量的新值為 0,則接下來的兩條指令將 eax 寄存器(保存函數(shù)的返回值)設(shè)置為 0,否則設(shè)置為 1.該操作是一個增量,而不是一個添加(因此得名).

This code copies the address of the variable to be incremented off the stack into the ecx register, then it does lock incl (%ecx) to atomically increment that variable by 1. The next two instructions set the eax register (which holds the return value from the function) to 0 if the new value of the variable is 0, and 1 otherwise. The operation is an increment, not an add (hence the name).

這篇關(guān)于“鎖"有什么作用?x86匯編中的指令是什么意思?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數(shù)據(jù)?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環(huán): for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環(huán)?)
Reusing thread in loop c++(在循環(huán) C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環(huán)形?)
主站蜘蛛池模板: 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 睿婕轻钢别墅_钢结构别墅_厂家设计施工报价 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 协议书_协议合同格式模板范本大全 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 诗词大全-古诗名句 - 古诗词赏析 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 槽钢冲孔机,槽钢三面冲,带钢冲孔机-山东兴田阳光智能装备股份有限公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 必胜高考网_全国高考备考和志愿填报信息平台 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 广东教师资格网-广东教师资格证考试网 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 |