匯編語言無效指令錯誤概述
更新時間:2012年07月31日 15:46:08 作者:
此錯誤僅適用于奔騰 處理器、奔騰處理器與MMX技術、奔騰OverDrive處理器 和奔騰OverDrive處理器帶有MMX技術。 奔騰Pro處理器, 奔騰II處理器和i486及更早版本處理器不受影響
問題:cmpxchg8b 指令比較一個8字節(jié)值edx和EAX帶有8字節(jié)值內存( 目的地操作數(shù))。 只有有效目標操作數(shù)用于此指令是內存 操作數(shù)。 如果目標操作數(shù)是一個寄存器處理器應產生一個 無效OpCode例外,執(zhí)行的指令cmpxchg8b應當停止和 處理器應該執(zhí)行無效OpCode異常處理程序。 此錯誤發(fā)生是 鎖定前綴為使用cmpxchg8b指令與一個(無效)寄存器目的地 操作數(shù)。 在這種情況下,處理器可能無法啟動執(zhí)行無效OpCode 異常處理程序,因為總線已鎖定。 這將導致系統(tǒng)掛起。
提示:如果(無效)寄存器目的地 操作使用cmpxchg8b指令和鎖定前綴,系統(tǒng)可能掛起。 沒有內存數(shù)據(jù)已損壞,用戶可以執(zhí)行系統(tǒng)重置以返回到正常 操作。 請注意,特定無效代碼序列必要此錯誤 發(fā)生通常不能被生成,該課程的編程也不這樣的序列 可可由此商業(yè)軟件。
此錯誤僅適用于奔騰 處理器、奔騰處理器與MMX技術、奔騰OverDrive處理器 和奔騰OverDrive處理器帶有MMX技術。 奔騰Pro處理器, 奔騰II處理器和i486及更早版本處理器不受影響。
變通辦法:有兩種變通方法此錯誤以 保護模式操作系統(tǒng)。 變通辦法二者生成一個頁面錯誤當無效 OpCode例外情況。 在以上兩例中,頁錯誤將維修前無效 OpCode例外,從而防止鎖定狀態(tài)的發(fā)生。 實施 細節(jié)將有所不同取決于操作系統(tǒng)。 使用以下方法之一:
第一部分的該解決辦法集的第一個7條目(0-6)中斷 描述信息表(IDT)在非寫頁。 當無效OpCode異常 (異常6)出現(xiàn)的原因是鎖定cmpxchg8b指令帶無效注冊 目的地,然后才),處理器將生成一個頁面錯誤如果沒有有 寫訪問該頁面包含條目6的IDT。 的第二部分該解決辦法 修改頁面錯誤處理程序認識和正確地調度"無效OpCode 例外情況,現(xiàn)在布線通過頁面錯誤處理程序。
部件I、IDT頁面訪問
標記頁面包含的第一個七個條目(0-6)的IDT為只讀通過 設置位1的頁面表條目為零。 也可以設置cr0.wp(16位)為1。 現(xiàn)在,當" 無效OpCode異常發(fā)生鎖定cmpxchg8b指令,處理器將 會觸發(fā)頁面錯誤由于它沒有寫訪問該頁面包含條目6的 IDT。 此頁面錯誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制 過程"無效操作異常。 請注意,例外6是 無效OpCode例外,因此與此圖式的OS有完全控制的任何程序 執(zhí)行一個無效cmpxchg8b指令。
可選:如果更新條目7-255的IDT發(fā)生在課程正常 操作,頁面錯誤應避免在寫入這些IDT條目。 這些頁面錯誤 可避免對齊IDT跨越一個4KB頁面邊界(例如,可在第一個七個 條目(0-6)的IDT在第一個只讀"頁和"剩余的條目在 讀/寫頁。
第II、頁面錯誤 處理程序修改
修改尋呼容處理程序來計算哪種異常導致該頁面錯誤使用 容地址以cr2。 如果錯誤代碼堆棧上表示產生異常 從震鈴0和如果地址對應于無效OpCode例外,然后彈出的 錯誤代碼關閉堆棧和跳轉到"無效OpCode異常處理程序。 否則 繼續(xù)正常頁面錯誤處理程序。
或
該解決辦法有兩部分。 首先,中斷描述信息表(IDT)對齊 (例如,任何無效OpCode異常會導致頁面錯誤(由于頁不 存在)。 其次,頁面錯誤處理程序日期認識和正確地調度 "無效OpCode異常和其他一些例外情況,現(xiàn)在布線通過 頁面錯誤處理程序。
部件I、IDT校準:
對齊中斷描述信息表(IDT)這樣的,其跨越4KB頁面邊界, 把第一項啟動56字節(jié)來自最終的第一個4KB"頁。 這將 該第一個七個條目(0-6)在第一個4KB"頁和剩余的條目在 第二個頁面。
該頁面包含的頭7條目IDT不能有映射在OS 頁面表。 這將導致任何例外0-6生成一份頁不存在故障。 一個 頁面錯誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制過程 這些異常。 請注意,例外6是無效OpCode例外,因此 與此圖式的OS有完全控制的任何程序執(zhí)行一個無效cmpxchg8b 指令。
第II、頁面錯誤處理程序修改:
識別訪問指向的第一頁IDT通過測試的容地址cr2中。 頁面不存在故障在其他地址可處理正常。
頁不存在故障第一頁上的IDT,操作系統(tǒng)必須識別和 發(fā)送異常造成該頁面不存在故障。 繼續(xù)之前,測試 故障地址以cr2以確定其是否被在地址范圍相應 例外情況0-6。
計算哪種異常導致該頁不存在故障從容地址 cr2中。
取決于操作系統(tǒng),某些權限級別檢查可能會要求,以及 調整中斷堆棧。
跳轉到正常處理程序為適當異常。
兩個變通辦法僅應上實現(xiàn)英特爾處理器返回family=5 通過CPUID指令。
提示:如果(無效)寄存器目的地 操作使用cmpxchg8b指令和鎖定前綴,系統(tǒng)可能掛起。 沒有內存數(shù)據(jù)已損壞,用戶可以執(zhí)行系統(tǒng)重置以返回到正常 操作。 請注意,特定無效代碼序列必要此錯誤 發(fā)生通常不能被生成,該課程的編程也不這樣的序列 可可由此商業(yè)軟件。
此錯誤僅適用于奔騰 處理器、奔騰處理器與MMX技術、奔騰OverDrive處理器 和奔騰OverDrive處理器帶有MMX技術。 奔騰Pro處理器, 奔騰II處理器和i486及更早版本處理器不受影響。
變通辦法:有兩種變通方法此錯誤以 保護模式操作系統(tǒng)。 變通辦法二者生成一個頁面錯誤當無效 OpCode例外情況。 在以上兩例中,頁錯誤將維修前無效 OpCode例外,從而防止鎖定狀態(tài)的發(fā)生。 實施 細節(jié)將有所不同取決于操作系統(tǒng)。 使用以下方法之一:
第一部分的該解決辦法集的第一個7條目(0-6)中斷 描述信息表(IDT)在非寫頁。 當無效OpCode異常 (異常6)出現(xiàn)的原因是鎖定cmpxchg8b指令帶無效注冊 目的地,然后才),處理器將生成一個頁面錯誤如果沒有有 寫訪問該頁面包含條目6的IDT。 的第二部分該解決辦法 修改頁面錯誤處理程序認識和正確地調度"無效OpCode 例外情況,現(xiàn)在布線通過頁面錯誤處理程序。
部件I、IDT頁面訪問
標記頁面包含的第一個七個條目(0-6)的IDT為只讀通過 設置位1的頁面表條目為零。 也可以設置cr0.wp(16位)為1。 現(xiàn)在,當" 無效OpCode異常發(fā)生鎖定cmpxchg8b指令,處理器將 會觸發(fā)頁面錯誤由于它沒有寫訪問該頁面包含條目6的 IDT。 此頁面錯誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制 過程"無效操作異常。 請注意,例外6是 無效OpCode例外,因此與此圖式的OS有完全控制的任何程序 執(zhí)行一個無效cmpxchg8b指令。
可選:如果更新條目7-255的IDT發(fā)生在課程正常 操作,頁面錯誤應避免在寫入這些IDT條目。 這些頁面錯誤 可避免對齊IDT跨越一個4KB頁面邊界(例如,可在第一個七個 條目(0-6)的IDT在第一個只讀"頁和"剩余的條目在 讀/寫頁。
第II、頁面錯誤 處理程序修改
修改尋呼容處理程序來計算哪種異常導致該頁面錯誤使用 容地址以cr2。 如果錯誤代碼堆棧上表示產生異常 從震鈴0和如果地址對應于無效OpCode例外,然后彈出的 錯誤代碼關閉堆棧和跳轉到"無效OpCode異常處理程序。 否則 繼續(xù)正常頁面錯誤處理程序。
或
該解決辦法有兩部分。 首先,中斷描述信息表(IDT)對齊 (例如,任何無效OpCode異常會導致頁面錯誤(由于頁不 存在)。 其次,頁面錯誤處理程序日期認識和正確地調度 "無效OpCode異常和其他一些例外情況,現(xiàn)在布線通過 頁面錯誤處理程序。
部件I、IDT校準:
對齊中斷描述信息表(IDT)這樣的,其跨越4KB頁面邊界, 把第一項啟動56字節(jié)來自最終的第一個4KB"頁。 這將 該第一個七個條目(0-6)在第一個4KB"頁和剩余的條目在 第二個頁面。
該頁面包含的頭7條目IDT不能有映射在OS 頁面表。 這將導致任何例外0-6生成一份頁不存在故障。 一個 頁面錯誤阻止了總線鎖定狀態(tài)并給操作系統(tǒng)完全控制過程 這些異常。 請注意,例外6是無效OpCode例外,因此 與此圖式的OS有完全控制的任何程序執(zhí)行一個無效cmpxchg8b 指令。
第II、頁面錯誤處理程序修改:
識別訪問指向的第一頁IDT通過測試的容地址cr2中。 頁面不存在故障在其他地址可處理正常。
頁不存在故障第一頁上的IDT,操作系統(tǒng)必須識別和 發(fā)送異常造成該頁面不存在故障。 繼續(xù)之前,測試 故障地址以cr2以確定其是否被在地址范圍相應 例外情況0-6。
計算哪種異常導致該頁不存在故障從容地址 cr2中。
取決于操作系統(tǒng),某些權限級別檢查可能會要求,以及 調整中斷堆棧。
跳轉到正常處理程序為適當異常。
兩個變通辦法僅應上實現(xiàn)英特爾處理器返回family=5 通過CPUID指令。
相關文章
Scala函數(shù)式編程專題--scala基礎語法介紹
這篇文章主要介紹了scala基礎語法的的相關資料,文中講解非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-06-06好玩又實用的查看函數(shù)圖像網(wǎng)站Desmos
這個網(wǎng)站的最大優(yōu)點,就是省去了安裝數(shù)學繪圖軟件或計算軟件的麻煩,只要打開瀏覽器就能使用了??戳私榻B之后,可別忘了把這個好網(wǎng)站加到書簽2021-08-08uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問
這篇文章主要介紹了uniApp微信小程序使用騰訊地圖定位功能及getLocation需要在app.json中聲明permission字段問題解決,需要的朋友可以參考下2022-12-12Scala函數(shù)式編程專題--scala集合和函數(shù)
這篇文章主要介紹了scala集合和函數(shù)的的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-06-06