鱼C论坛

 找回密码
 立即注册
查看: 2843|回复: 0

[学习笔记] 【原创】保护模式JMP指令-远跳转相关翻译资料(2)-异常说明

[复制链接]
发表于 2017-12-23 17:27:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 兰陵月 于 2017-12-23 17:38 编辑

Protected Mode Exceptions(保护模式异常情况)

        
        #GP(0)                        
                If offset in target operand, call gate, or TSS is beyond the code segment limits.
                ;目标操作数、调用门或TSS中的偏移地址超出代码段界限。
                If the segment selector in the destination operand, call gate, task gate, or TSS is NULL.
                ;目标操作数、调用门、任务门或TSS中的段选择子为空。
                If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.
                ;内存操作数有效地址超出CS、DS、ES、FS、GS段界限。
                If the DS, ES, FS, or GS register is used to access memory and it contains a NULL segment
                selector.
                ;用段选择子为空的DS、ES、FS或GS寄存器访问内存。
                                       
        #GP(selector)         
                If the segment selector index is outside descriptor table limits.
                ;段选择子索引超出描述符表界限。
                If the segment descriptor pointed to by the segment selector in the destination operand is not for
                a conforming-code segment,nonconforming-code segment, call gate, task gate,
or task statesegment.
                ;目标操作数中的段选择子指向的段描述符描述符的目标对象不是一致代码段、非一致代码段、调用门、任务门或TSS。
                If the DPL for a nonconforming-code segment is not equal to the CPL
                ;当前特权级CPL与非一致目标代码段的DPL不相等,即不是同一特权级。
                (When not using a call gate.),If the RPL for the segment’s segment selector is greater than the CPL.
                ;未使用调用门时,段选择子中的请求特权级RPL大于指令当前当前特权级CPL。
                If the DPL for a conforming-code segment is greater than the CPL.
                ;要跳转的一致代码段的DPL大于指令的当前特权级CPL。
                If the DPL from a call-gate, task-gate, or TSS segment descriptor is less than the CPL or than the RPL of the
                call-gate, task-gate, or TSS’s segment selector.
                ;调用门、任务门或TSS段描述符的DPL小于CPL,或者小于调用门、任务门或TSS段选择子的RPL。
                If the segment descriptor for selector in a call gate does not indicate it is a code segment.
                ;调用门中的目标段选择子指向的段描述符不是一个代码段描述符。
                If the segment descriptor for the segment selector in a task gate does not indicate an available TSS.
                ;任务门中段选择子指向的段描述符不是指向有效TSS。
                If the segment selector for a TSS has its local/global bit set for local.
                ;TSS段选择子局部/全局位设置为局部位。
                If a TSS segment descriptor specifies that the TSS is busy or not available.
                ;TSS描述符B位指定“忙”不可用。

        #SS(0)
                If a memory operand effective address is outside the SS segment limit.
                ;内存操作数有效地址超出了SS段界限。
        
        #NP (selector)
                If the code segment being accessed is not present.
                ;拟访问的代码段不存在。
                If call gate, task gate, or TSS not present.
                ;调用门、任务门、TSS不存在。
        
        #PF(fault-code)
                If a page fault occurs.
                ;发生页面错误。

        #AC(0)
                If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3.
                (Only occurs when fetching target from memory.)
                ;如果启用了对齐检查,并在CPL为3的情况下进行了未对齐的内存引用。(只在从内存中抓取目标时发生。)
        
        #UD
                If the LOCK prefix is used.
                ;前缀锁打开



                               
登录/注册后可看大图

                               
登录/注册后可看大图


Protected Mode Exceptions(保护模式异常情况)
        
        #GP(0)                         
                If offset in target operand, call gate, or TSS is beyond the code segment limits.
                ;目标操作数、调用门或TSS中的偏移地址超出代码段界限。
                If the segment selector in the destination operand, call gate, task gate, or TSS is NULL.
                ;目标操作数、调用门、任务门或TSS中的段选择子为空。
                If a memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.
                ;内存操作数有效地址超出CS、DS、ES、FS、GS段界限。
                If the DS, ES, FS, or GS register is used to access memory and it contains a NULL segment selector.
                ;用段选择子为空的DS、ES、FS或GS寄存器访问内存。
                                        
        #GP(selector)         
                If the segment selector index is outside descriptor table limits.
                ;段选择子索引超出描述符表界限。
                If the segment descriptor pointed to by the segment selector in the destination operand is not for a conforming-
                code segment,nonconforming-code segment, call gate, task gate, or task state segment.
                ;目标操作数中的段选择子指向的段描述符描述符的目标对象不是一致代码段、非一致代码段、调用门、任务门或TSS。
                If the DPL for a nonconforming-code segment is not equal to the CPL 
                ;当前特权级CPL与非一致目标代码段的DPL不相等,即不是同一特权级。
                (When not using a call gate.),If the RPL for the segment’s segment selector is greater than the CPL.
                ;未使用调用门时,段选择子中的请求特权级RPL大于指令当前当前特权级CPL。
                If the DPL for a conforming-code segment is greater than the CPL.
                ;要跳转的一致代码段的DPL大于指令的当前特权级CPL。
                If the DPL from a call-gate, task-gate, or TSS segment descriptor is less than the CPL or than the RPL of the 
                call-gate, task-gate, or TSS’s segment selector.
                ;调用门、任务门或TSS段描述符的DPL小于CPL,或者小于调用门、任务门或TSS段选择子的RPL。
                If the segment descriptor for selector in a call gate does not indicate it is a code segment.
                ;调用门中的目标段选择子指向的段描述符不是一个代码段描述符。
                If the segment descriptor for the segment selector in a task gate does not indicate an available TSS.
                ;任务门中段选择子指向的段描述符不是指向有效TSS。
                If the segment selector for a TSS has its local/global bit set for local.
                ;TSS段选择子局部/全局位设置为局部位。
                If a TSS segment descriptor specifies that the TSS is busy or not available.
                ;TSS描述符B位指定“忙”不可用。

        #SS(0) 
                If a memory operand effective address is outside the SS segment limit.
                ;内存操作数有效地址超出了SS段界限。
        
        #NP (selector) 
                If the code segment being accessed is not present.
                ;拟访问的代码段不存在。
                If call gate, task gate, or TSS not present.
                ;调用门、任务门、TSS不存在。
        
        #PF(fault-code) 
                If a page fault occurs.
                ;发生页面错误。

        #AC(0) 
                If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3.
                (Only occurs when fetching target from memory.)
                ;如果启用了对齐检查,并在CPL为3的情况下进行了未对齐的内存引用。(只在从内存中抓取目标时发生。)
        
        #UD 
                If the LOCK prefix is used.
                ;前缀锁打开


本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 06:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表