汇编语言 基于x86处理器 第二章
2021-02-12 14:22
标签:总线 信息 you 定义 标志位 单位 font 操作码 位置 X86中,所有数据存储的基本单位都是字节,一个字节(byte)有8位。一个字(word)两个字节,双字(doubleword)四个字节,四字(quadword)八个字节。 执行一条机器指令最少需要1个时钟周期。由于在CPU、系统总线和内存电路之间存在速度差异,因此,需要访问内存的指令常常需要空时钟周期,也被称为等待状态。 程序执行周期: 一条机器指令需要经过一系列预先定义好的步骤,这些步骤被称为指令执行周期。 1)CPU从被称为指令队列的内存区域取得指令,之后立即增加指令指针的值。 2)CPU对指令的二进制位模式进行编码。这种位模式可能会表示该指令有操作数(输入值)。 3)如果有操作数,CPU就从寄存器和内存中取得操作数。有时,这步还包括了地址计算(找内存)。 4)使用步骤3取得的操作数,CPU执行该指令。同时更新部分状态标志位,如零标志,进位标志和溢出标志。 5)如果目的操作数也是该指令的一部分,则CPU还需要存放其执行结果。 上诉操作简化为:取指令、编码、执行。 指令队列:(是打开OD看到那一列吧) 指令指针:EIP寄存器,指令指针增加,代表指向下一条指令 在计算机能直接执行的指令包括两部分:他们是操作码(指令)与操作数(数据) 没有操作数的情况:NOP指令 操作数:说明指令要使用的数据。有以下三种类型(三种意义): 立即数:操作数为一固定值,如0x42 寄存器:操作数指向寄存器,如ECX 内存地址:操作数指向内存地址,如[eax] 状态标志寄存器: 零标志:ZF; 进位标志:CF; 溢出标志:OF; 读取内存: 1)将想要读取的值的地址放到地址总线上。 2)设置处理器RD(读取)引脚(改变RD的值) 3)等待一个时钟周期给存储器芯片进行响应。 4)将数据从数据总线复制到目标操作数。 上诉每步常常只需要一个时钟周期。 加载并执行: 1)操作系统(OS)在当前磁盘目录下搜索程序文件名。找不到就去环境变量(Path)中找。再找不到就发出错误信息。 2)被找到后,OS访问该程序文件基本信息(PE文件头)。包括文件大小,以及在磁盘驱动器上的物理位置。 3)OS确定内存中下一个可使用的位置,将程序文件加载到内存。为该程序分配内存块,并将程序大小和位置信息加入表中(描述符表)。另外,OS可能调整程序内指针的值,使得它们包括程序数据地址(帮程序找数据)。 4)OS开始执行程序的第一条机器指令(程序入口)。当程序开始执行后,就成为一个进程。OS为这个进程分配一个标识号(进程PID),用于在执行期间对其进行追踪。 5)进程运行。OS的工作室追踪进程的执行,并响应系统资源的请求。这些资源包括内存、磁盘文件和输入输出设备等。 6)进程结束后,程序就会从内存中移除。 GDT全局描述符表:https://www.cnblogs.com/mlzrq/p/10223083.html IDT 中断描述符表:https://www.cnblogs.com/yuqiao-ray-vision/p/3713506.html 操作模式: 保护模式 虚拟8086模式 实地址模式 系统管理模式 (用处暂且未明|挖坑) 基本执行环境: 地址空间 基本程序执行寄存器: 通用寄存器,段寄存器,指令指针EIP,EFLAGS寄存器 典型X86计算机组件: 主板: CPU插座,存储器插槽(SIMM或DIMM),BIOS,CMOS RAM,USB接口,PCI总线接口, 主板芯片组 PCI总线为CPU和其他系统设备(外设,如显卡)提供了连接桥。 内存: ROM,EPROM,DRAM,SRAM,VRAM,CMOS RAM. 输入输出: 应用程序 -> OS函数 -> BIOS函数 -> 硬件 翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 谷歌翻译(国内) 译 汇编语言 基于x86处理器 第二章 标签:总线 信息 you 定义 标志位 单位 font 操作码 位置 原文地址:https://www.cnblogs.com/Seccold/p/12730237.html