[转帖]CS、IP和PC寄存器
https://www.cnblogs.com/zhuge2018/p/8466288.html 之前的理解不对 当然了 现在的理解也不太对。。
CS、IP和PC寄存器
CS寄存器和IP寄存器:
首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址)。
CPU在执行指令时,通过代码寄存器CS和指令指针寄存器IP(instruction Pointer)来确定要执行的下一条指令的内存地址。
CS:IP 两个寄存器指示了CPU当前要读取的指令地址,计算方式一般为CS左移4位然后加上IP寄存器,作为地址去取内容。
CPU的制造商会为这两个寄存器设置出厂初始值,这2个初始值,其实就决定了第一条执行指令的地址,这是所有程序的源头,没有这个初始值,多么复杂精妙的程序都没用,因为CPU压根就不会鸟你。随着X86的发展,第一条指令并不是一成不变的,
(1)8086:CPU reset后CS寄存器的值为0xFFFF,IP寄存器的值为0,所以将CS左移4位+IP,换算出的物理地址为0xFFFF0,这个地址就是
1MB往下16字节的位置。
(2)80286:CPU reset之后CS的只为0xF000,IP的只为0xFFF0,算法同样是CS左移4位+IP,计算出的物理地址也是0xFFFF0
(3)80386:到了386年代,一切都变了,此时CPU reset后CS的只为0xF000,但是CS除了段选择之外还有一个隐藏的基址寄存器,这个寄存
器的值为0xFFFF0000,IP的值仍然为0xFFF0,此时的计算算法也不是上面的左移4位了,而是0xFFFF0000 + 0xFFF0 = 0xFFFFFFF0
,这个地址已经是很高的地址了,是4G往下16字节的位置。
PC是非intel厂家对IP的称呼,也就是说PC起始跟CS:IP是一回事儿。
[转帖]CS、IP和PC寄存器的更多相关文章
- CS、IP和PC寄存器
CS寄存器和IP寄存器: 首先强调一下,这两个寄存器非常非常重要,CS的全拼为“Code segment”,即代码段寄存器,对应于内存中的存放代码的内存区域,用来存放内存代码段区域的入口地址(段基址) ...
- JVM之PC寄存器(Program Counter Register)
基本特性: 当前线程执行的字节码的行号指示器. Java虚拟机支持多个线程同时执行,每一个线程都有自己的pc寄存器. 任意时刻,一个线程都只会执行一个方法的代码,称为该线程的当前方法,对于非nativ ...
- PC寄存器的真实状态
因为预取指令的关系,PC寄存器永远比当前的寄存器多两个指令,ARM模式为大8,Thumb模式为大2,这针对的是32bit的ARMv7的指令集 In ARM state, the value of th ...
- 大脸猫讲逆向之ARM汇编中PC寄存器详解
i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍 ...
- Verilog MIPS32 CPU(一)-- PC寄存器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Java虚拟机栈和PC寄存器
PC Register介绍 JVM中的程序计数寄存器(Program Counter Register)中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息.CPU只有把数据装 ...
- JVM-运行时数据区之PC寄存器
1.运行时数据区图 运行时数据区是在类加载完成后所经历的阶段,当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,执行引擎就 ...
- cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
jmp 寄存器 命令 对IP间接赋值.
- Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯
Android 是一个开源的手机操作系统平台,已经被非常多的开发者视作未来最有潜力的智能手机操作系统.而且,在很短的时间内就在Android Market上出现大量的第三方应用程序,供用户下载与使用, ...
随机推荐
- 《Java大学教程》—第7章 类的实现
统一建模语言(UML)用方框代表类.方框被分成3部分,第一部分是类名,第二部分是类的属性,第三部分是类的方法.类的属性(属性名称:属性类型):类的方法(方法名称(参数类型):返回值类型).静态的类的属 ...
- ElasticSearch(四):使用Java连接ElasticSearch集群
public class ESIndexMapping { private static String host="192.168.56.3"; // 服务器地址 private ...
- 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句
错误信息:只有 assignment.call.increment.decrement 和 new 对象表达式可用作语句: 分析:发生这种情况一般是在赋值时把“=”写成了“==”,例如:textBox ...
- nginx-redirect配置
转载一篇非常好的文章,大赞!!!!! http://blog.csdn.net/u010391029/article/details/50395680 nginx的配置文件解读 http://blog ...
- go 调用windows dll 的三种方法
参考:https://blog.csdn.net/qq_39584315/article/details/81287669 大部分代码参考:https://studygolang.com/articl ...
- UVA215-Spreadsheet Calculator(模拟+拓扑排序)
Problem UVA215-Spreadsheet Calculator Accept:401 Submit:2013 Time Limit: 3000 mSec Problem Descript ...
- 在asp.net web api中利用过滤器设置输出缓存
介绍 本文将介绍如何在asp.net web api中利用过滤器属性实现缓存. 实现过程 1,首先在web.config文件下appsettings下定义“CacheEnabled”和“CacheTi ...
- 转://ASM与文件系统之间文件传输
熟悉数据库运维的程序猿都知道,数据的备份重于一切,随着业务的发展,数据量也会越来越大,有时候备份集会放在文件系统上面,有的备份集会放在asm存储上面,实现文件系统到文件系统之间的文件传输很简单,cp或 ...
- day04 if判断、while条件循环、for迭代器循环部分使用举例
一:if判断 1.成绩>=90,那么:优秀 如果成绩>=80且<90,那么:良好 如果成绩>=70且<80,那么:普通 其 ...
- ESP8266 HTTP 项目(2)HTTP网页修改WIFI连接,上电自动连接上次的WIFI。
网页 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf ...