CPU Instruction Pointer

简介: CPU Instruction Pointer eryar@163.com 1.Introduction CPU对存储器的读写通过总线Bus来完成,总线又分为地址总线(Address Bus)、数据总线(Data Bus)、控制总线(Control Bus)。

CPU Instruction Pointer

eryar@163.com

1.Introduction

CPU对存储器的读写通过总线Bus来完成,总线又分为地址总线(Address Bus)、数据总线(Data Bus)、控制总线(Control Bus)。地址总线AB决定了CPU的寻址能力,即可以访问的存储空间的大小。数据总线DB决定了CPU的一次操作中可以处理的数据的大小,16位CPU一次可以加载两个字节,32位CPU一次可以加载4个字节。当然CPU的主频越大,那么在相同的时间内,处理的次数会更多。

2.16bit CPU 

由于8086CPU有20位地址总线,所以寻址能力为1MB。但是8086所有的寄存器都是16位的,如果由寄存器直接处理地址,那么一个16位的寄存器可以访问的最大地址为64KB。如何通过16位的寄存器来访问这1MB的空间呢?8086CPU折腾出一个地址加法器,通过加法器来根据两个16位地址来合成一个20位的地址,即物理地址=段地址X16+偏移地址。对应到CPU中就是CS和IP这两个寄存器。

8086CPU中的CS和IP的内容提供了CPU要执行指令的地址。在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS和IP中的内容决定的,程序员可以通过改变CS和IP中的内容来控制CPU执行目标指令。

若想同时修改CS和IP的内容,可以用形如jmp 段地址:偏移地址的指令完成。如下图所示:

wps_clip_image-10222

3.32bit CPU

因为80386的CPU寻址能力是4GB,所以它的寻址模式是平坦模式,不需要用段地址+偏移地址来折腾。所以32位CPU的EIP寄存器对应了16位CPU中的CS和IP两个寄存器。修改了EIP寄存器就可以改变CPU要执行的指令。如下面一段简单代码:

#include  < stdio.h >  

int  main( int  argc,  char *  argv[]) 

    mark: printf(
" hi\n " ); 

    
goto  mark; 

    
return   0
}

使用了goto,在Debug时可以在Visual Studio中看到CPU中相关寄存器中的信息如下图所示:

wps_clip_image-22411

由上图可知,goto对应的汇编命令就是一个修改EIP寄存器的jmp指令。

目录
相关文章
|
Linux C语言 C++
linux GCC编译错误:CPU you selected does not support x86-64 instruction set
Linux GCC编译时如遇到如下错误: cpp:1: error: CPU you selected does not support x86-64 instruction set 是因为在64位平台上加了-march=pentium4这样一个编译参数,它只用于32位平台。
1765 0
|
21天前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
1天前
|
监控 算法 Java
|
1天前
|
存储 弹性计算 程序员
新手程序员如何阿里云服务器配置?新人开发者CPU内存带宽存储怎么选?
对于新手开发者、个人或学生选择阿里云服务器,推荐ECS经济型e实例(ecs.e-c1m1.large),适用于小型网站或轻量应用。配置2核2G内存、3M固定带宽、40G ESSD系统盘,仅99元/年且续费同价。
|
9天前
|
监控 算法 Java
|
9天前
|
运维 DataWorks 安全
DataWorks产品使用合集之如何查看空间资源、CPU、内存和存储空间容量
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
18天前
|
缓存 弹性计算 数据库
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
2核4G云服务器支持的在线人数取决于多种因素:应用效率、并发数、内存、CPU、带宽、数据库性能、缓存策略、CDN和OSS使用,以及用户行为和系统优化。阿里云的ECS u1实例2核4G配置,适合轻量级应用,实际并发量需结合具体业务测试。
6 0
阿里云2核4G服务器支持多少人在线?程序效率、并发数、内存CPU性能、公网带宽多因素
|
24天前
|
监控 Python
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
paramiko 模块 ---Python脚本监控当前系统的CPU、内存、根目录、IP地址等信息
|
8天前
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之如何查看空间资源、CPU和内存以及存储空间容量
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程