鉴于EFLAGS寄存器的重要性,所以将这一部分内容从处理器体系结构及寻址模式一文中单独抽出另成一文,这部分内容主要来自Intel Developer Mannual,在后续的内核系列中遇到的许多和EFLAGS寄存器有关的内容将直接从本文引用。众所周知,IA-32体系结构为通用系统(general system)提供了16个基本的程序执行寄存器:包含一些通用目的寄存器(General-purpose registers)、段寄存器(Segment registers)以及EFLAGS和EIP寄存器,而后两者对于程序的执行来说可谓至关重要。
其中EIP寄存器主要用于存放当前代码段即将被执行的下一条指令的偏移,但其本质上并不能直接被指令直接访问。 【it is controlled implicitly by control-transfer instructions (such as JMP, Jcc, CALL, and RET), interrupts, and exceptions.】 很显然,这个寄存器指令由控制转移指令、中断及异常所控制。 【The only way to read the EIP register is to execute a CALL instruction and then read the value of the return instruction pointer from the procedure stack.The EIP register can be loaded indirectly by modifying the value of a return instruction pointer on the procedure stack and executing a return instruction (RET or IR

本文详细介绍了EFLAGS寄存器在IA-32体系结构中的作用,它作为程序状态和控制寄存器,报告执行程序的状态并允许有限的控制。在64位模式下扩展为RFLAGS。EFLAGS包含状态标志、系统标志和控制标志,其内容在中断或异常处理时保存在栈或TSS中。状态标志如CF、OF、AF、SF和ZF指示算术运算结果;DF标志控制串指令方向;系统标志和IOPL域则涉及操作系统控制。
最低0.47元/天 解锁文章
703

被折叠的 条评论
为什么被折叠?



