x86 架构规范
Posted
技术标签:
【中文标题】x86 架构规范【英文标题】:x86 architecture specifications 【发布时间】:2011-01-03 18:44:15 【问题描述】:我想用 C++ 编写一个与 IBM-PC 兼容的模拟器作为一个教育项目,为了正确模拟 8086 处理器,需要了解它的工作原理。
我需要的信息的一些示例:
代码的结构如何(单条指令的大小,如何解包等)
寄存器的具体工作原理
关于单条指令作用的详细信息(例如 CMP 命令“比较 ... 和 ... 并设置标志”的默认描述对我来说还不够)
我已经搜索了几个小时,但我得到的信息更多是针对想学习 x86 汇编的人,并且不够详细
也许你能帮帮我?
【问题讨论】:
【参考方案1】:您可能想直接找到源代码:
http://download.intel.com/design/intarch/manuals/24319101.pdf
【讨论】:
【参考方案2】:sandpile.org 是一个不错的地方,如果您需要有关 x86 操作码的编码格式的信息。所有信息都整理在表格中,便于查找。
【讨论】:
【参考方案3】:您可以查看英特尔架构手册: http://www.intel.com/products/processor/manuals/ (注意:Otavio 的链接更好,因为它指向较旧的手册)
当然,其中包括许多 8086 中不存在的指令和功能的规范,但您应该可以跳过新内容。
您可能还想查看Bochs 以检查事情或获得一些想法。
最后,除非您已经非常有信心,否则我建议您从更简单的 (RISC) 指令集开始,例如 MIPS 架构之一。与典型的 CISC 架构相比,典型 RISC 架构中的指令解码和寻址模式要简单得多。
【讨论】:
【参考方案4】:Randall Hyde 的汇编语言艺术。它有几个部分介绍了处理器的工作原理,例如:
第三章:系统组织
3.0章节概述 3.1 基本系统组件 3.1.1 系统总线 3.1.1.1 数据总线 3.1.1.2 地址总线 3.1.1.3 控制总线 3.1.2 内存子系统 3.1.3 I/O 子系统 3.2 系统时序 3.2.1 系统时钟 3.2.2 内存访问和系统时钟 3.2.3 等待状态 3.2.4 缓存内存 3.3 886、8286、8486 和 8686 “假设”处理器 3.3.1 CPU 寄存器 3.3.2 算术和逻辑单元 3.3.3 总线接口单元 3.3.4 控制单元和指令集 3.3.5 x86 指令集 3.3.6 x86 上的寻址模式 3.3.7 编码x86指令 3.3.8 逐步指令执行 3.3.9 x86 处理器的区别 3.3.10 886 处理器 3.3.11 8286 处理器 3.3.12 8486 处理器 3.3.12.1 8486 管道 3.3.12.2 管道中的停顿 3.3.12.3 缓存、预取队列和 8486 3.3.12.4 8486 上的危险 3.3.13 8686 处理器 3.4 I/O(输入/输出) 3.5 中断和轮询 I/O【讨论】:
以上是关于x86 架构规范的主要内容,如果未能解决你的问题,请参考以下文章