匯編語(yǔ)言無(wú)效指令錯(cuò)誤概述
提示:如果(無(wú)效)寄存器目的地 操作使用cmpxchg8b指令和鎖定前綴,系統(tǒng)可能掛起。 沒(méi)有內(nèi)存數(shù)據(jù)已損壞,用戶可以執(zhí)行系統(tǒng)重置以返回到正常 操作。 請(qǐng)注意,特定無(wú)效代碼序列必要此錯(cuò)誤 發(fā)生通常不能被生成,該課程的編程也不這樣的序列 可可由此商業(yè)軟件。
此錯(cuò)誤僅適用于奔騰 處理器、奔騰處理器與MMX技術(shù)、奔騰OverDrive處理器 和奔騰OverDrive處理器帶有MMX技術(shù)。 奔騰Pro處理器, 奔騰II處理器和i486及更早版本處理器不受影響。
變通辦法:有兩種變通方法此錯(cuò)誤以 保護(hù)模式操作系統(tǒng)。 變通辦法二者生成一個(gè)頁(yè)面錯(cuò)誤當(dāng)無(wú)效 OpCode例外情況。 在以上兩例中,頁(yè)錯(cuò)誤將維修前無(wú)效 OpCode例外,從而防止鎖定狀態(tài)的發(fā)生。 實(shí)施 細(xì)節(jié)將有所不同取決于操作系統(tǒng)。 使用以下方法之一:
第一部分的該解決辦法集的第一個(gè)7條目(0-6)中斷 描述信息表(IDT)在非寫(xiě)頁(yè)。 當(dāng)無(wú)效OpCode異常 (異常6)出現(xiàn)的原因是鎖定cmpxchg8b指令帶無(wú)效注冊(cè) 目的地,然后才),處理器將生成一個(gè)頁(yè)面錯(cuò)誤如果沒(méi)有有 寫(xiě)訪問(wèn)該頁(yè)面包含條目6的IDT。 的第二部分該解決辦法 修改頁(yè)面錯(cuò)誤處理程序認(rèn)識(shí)和正確地調(diào)度"無(wú)效OpCode 例外情況,現(xiàn)在布線通過(guò)頁(yè)面錯(cuò)誤處理程序。
部件I、IDT頁(yè)面訪問(wèn)
標(biāo)記頁(yè)面包含的第一個(gè)七個(gè)條目(0-6)的IDT為只讀通過(guò) 設(shè)置位1的頁(yè)面表?xiàng)l目為零。 也可以設(shè)置cr0.wp(16位)為1。 現(xiàn)在,當(dāng)" 無(wú)效OpCode異常發(fā)生鎖定cmpxchg8b指令,處理器將 會(huì)觸發(fā)頁(yè)面錯(cuò)誤由于它沒(méi)有寫(xiě)訪問(wèn)該頁(yè)面包含條目6的 IDT。 此頁(yè)面錯(cuò)誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制 過(guò)程"無(wú)效操作異常。 請(qǐng)注意,例外6是 無(wú)效OpCode例外,因此與此圖式的OS有完全控制的任何程序 執(zhí)行一個(gè)無(wú)效cmpxchg8b指令。
可選:如果更新條目7-255的IDT發(fā)生在課程正常 操作,頁(yè)面錯(cuò)誤應(yīng)避免在寫(xiě)入這些IDT條目。 這些頁(yè)面錯(cuò)誤 可避免對(duì)齊IDT跨越一個(gè)4KB頁(yè)面邊界(例如,可在第一個(gè)七個(gè) 條目(0-6)的IDT在第一個(gè)只讀"頁(yè)和"剩余的條目在 讀/寫(xiě)頁(yè)。
第II、頁(yè)面錯(cuò)誤 處理程序修改
修改尋呼容處理程序來(lái)計(jì)算哪種異常導(dǎo)致該頁(yè)面錯(cuò)誤使用 容地址以cr2。 如果錯(cuò)誤代碼堆棧上表示產(chǎn)生異常 從震鈴0和如果地址對(duì)應(yīng)于無(wú)效OpCode例外,然后彈出的 錯(cuò)誤代碼關(guān)閉堆棧和跳轉(zhuǎn)到"無(wú)效OpCode異常處理程序。 否則 繼續(xù)正常頁(yè)面錯(cuò)誤處理程序。
或
該解決辦法有兩部分。 首先,中斷描述信息表(IDT)對(duì)齊 (例如,任何無(wú)效OpCode異常會(huì)導(dǎo)致頁(yè)面錯(cuò)誤(由于頁(yè)不 存在)。 其次,頁(yè)面錯(cuò)誤處理程序日期認(rèn)識(shí)和正確地調(diào)度 "無(wú)效OpCode異常和其他一些例外情況,現(xiàn)在布線通過(guò) 頁(yè)面錯(cuò)誤處理程序。
部件I、IDT校準(zhǔn):
對(duì)齊中斷描述信息表(IDT)這樣的,其跨越4KB頁(yè)面邊界, 把第一項(xiàng)啟動(dòng)56字節(jié)來(lái)自最終的第一個(gè)4KB"頁(yè)。 這將 該第一個(gè)七個(gè)條目(0-6)在第一個(gè)4KB"頁(yè)和剩余的條目在 第二個(gè)頁(yè)面。
該頁(yè)面包含的頭7條目IDT不能有映射在OS 頁(yè)面表。 這將導(dǎo)致任何例外0-6生成一份頁(yè)不存在故障。 一個(gè) 頁(yè)面錯(cuò)誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制過(guò)程 這些異常。 請(qǐng)注意,例外6是無(wú)效OpCode例外,因此 與此圖式的OS有完全控制的任何程序執(zhí)行一個(gè)無(wú)效cmpxchg8b 指令。
第II、頁(yè)面錯(cuò)誤處理程序修改:
識(shí)別訪問(wèn)指向的第一頁(yè)IDT通過(guò)測(cè)試的容地址cr2中。 頁(yè)面不存在故障在其他地址可處理正常。
頁(yè)不存在故障第一頁(yè)上的IDT,操作系統(tǒng)必須識(shí)別和 發(fā)送異常造成該頁(yè)面不存在故障。 繼續(xù)之前,測(cè)試 故障地址以cr2以確定其是否被在地址范圍相應(yīng) 例外情況0-6。
計(jì)算哪種異常導(dǎo)致該頁(yè)不存在故障從容地址 cr2中。
取決于操作系統(tǒng),某些權(quán)限級(jí)別檢查可能會(huì)要求,以及 調(diào)整中斷堆棧。
跳轉(zhuǎn)到正常處理程序?yàn)檫m當(dāng)異常。
兩個(gè)變通辦法僅應(yīng)上實(shí)現(xiàn)英特爾處理器返回family=5 通過(guò)CPUID指令。
相關(guān)文章
Eclipse 誤刪文件的恢復(fù)與代碼的恢復(fù)詳解
這篇文章主要介紹了Eclipse 誤刪文件的恢復(fù),代碼的恢復(fù)的相關(guān)資料,需要的朋友可以參考下2016-09-09Matlab使用fft畫(huà)出信號(hào)頻譜圖的方法
這篇文章主要介紹了Matlab使用fft畫(huà)出信號(hào)頻譜圖的方法,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Scala函數(shù)式編程專題--scala基礎(chǔ)語(yǔ)法介紹
這篇文章主要介紹了scala基礎(chǔ)語(yǔ)法的的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06權(quán)限控制之粗粒度與細(xì)粒度概念及實(shí)現(xiàn)簡(jiǎn)單介紹
這篇文章主要介紹了權(quán)限控制之粗粒度與細(xì)粒度概念及實(shí)現(xiàn)簡(jiǎn)單介紹,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10Hbuilder連遠(yuǎn)程接服務(wù)器上傳代碼的圖文教程
下面小編就為大家分享一篇Hbuilder連遠(yuǎn)程接服務(wù)器上傳代碼的圖文教程,具有很好的參考價(jià)值,一起跟隨小編過(guò)來(lái)看看吧,希望對(duì)大家有所幫助2017-11-11好玩又實(shí)用的查看函數(shù)圖像網(wǎng)站Desmos
這個(gè)網(wǎng)站的最大優(yōu)點(diǎn),就是省去了安裝數(shù)學(xué)繪圖軟件或計(jì)算軟件的麻煩,只要打開(kāi)瀏覽器就能使用了??戳私榻B之后,可別忘了把這個(gè)好網(wǎng)站加到書(shū)簽2021-08-08uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)
這篇文章主要介紹了uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問(wèn)題解決,需要的朋友可以參考下2022-12-12ffmpeg播放器實(shí)現(xiàn)詳解之框架搭建過(guò)程
這篇文章主要介紹了ffmpeg播放器實(shí)現(xiàn)詳解之框架搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07H5混合開(kāi)發(fā)手機(jī)Web App入門(mén):概念篇
如果你開(kāi)始學(xué)習(xí)手機(jī) App 開(kāi)發(fā),就一定會(huì)聽(tīng)到 H5 這個(gè)詞。它是目前的主流開(kāi)發(fā)技術(shù)之一,容易上手,開(kāi)發(fā)周期短、成本低、兼容傳統(tǒng) Web 開(kāi)發(fā)。但是,很少有文章詳細(xì)介紹,H5 到底是什么技術(shù),有什么原理,跟其他技術(shù)的差異在哪里。2022-12-12Scala函數(shù)式編程專題--scala集合和函數(shù)
這篇文章主要介紹了scala集合和函數(shù)的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06