ia32专题

IA32系统级架构总览(二)

系统级架构由寄存器、数据结构、指令组成,这些设计对基本的系统级别的操作提供了支持,比如:内存管理、终端与异常处理、任务管理、多进程控制等。 我们先来看一看寄存器与数据结构的总汇图:现在你可能看不懂,不过没关系,接下来我们一起学习。     一、概述 首先大体看一下这个图,左上角的EFLAGS和CR0~CR4是寄存器,用于做一些标记好让处理器知道现在现场的情况,比如CR0可以告

IA32系统级架构总览(一) 实模式和保护模式

应用程序的编写大部分的时候是不必关心系统级架构的,最多学习一下平台所给的API即可,也就是我们通常说的黑箱子。但是在学习操作系统的时候,系统级架构是要关心的。 系统级架构很难学习,其中一个很大的原因是“纷繁复杂的架构”,还有就是很强的陌生感。先说个故事吧。 秋季学期俱乐部招新由我来面试,之前并没有做过这样的事情,我的手中有一份参加面试的名单,上面写着同学们的姓名、学号、学院、联系方式等信

IA32体系结构6(x86加电启动过程概述)

第一条指令物理地址 加电启动过程非常精妙,道理很简单,加电时刻,所有的硬件部件基本都是没法工作的状态。至少内存里什么有用的东西也没有,CPU的寄存器还是初始状态,各种地址转换表也没有建立好。 首先我们来看下,CPU从上电到正常工作,在地址线上发出的第一个有效物理地址是什么。这个在《Intel Architecture Software Developer Manual Volume 3》8.1

IA32体系结构5(x86程序控制指令)

转移指令 转移指令(JMP)允许程序员跳过一段程序,跳转到存储器的任何位置执行下一条指令。条件转移则允许程序员根据对数值的测试做出决定。这些数值测试的结果保存在标志位中,再由条件转移指令检测它们。 1.无条件转移指令 可以分为短转移、近转移、远转移。 短转移-2字节指令,允许在+127和-128字节范围内转移 近转移-3字节指令,允许在+32kb和-32kb范围内转移 远转移-5字节指

IA32体系结构4(x86常见指令概述)

IA32(x86)体系结构指令种类比较多,但是常见的一般也还行,一下总结linux0.11内核中使用到的所有指令,概述这些指令的基本用法,因指令的使用跟寻址方式都有关系,篇幅所限,不详细展开所有细节,看内核代码,了解基本情况已经足够。 1.MOV(mov) 数据转移指令,从源操作数转移数据到目标操作数。 2.PUSH(push) 9086~80286中的push总是把两个字节的数据传送到堆

IA32体系结构3(x86机器码概述)

归根结底,处理器只认识机器语言,处理器会按照机器码的指示进行动作。 x86体系结构使用指令长度可变的机器语言,一条机器码指令可以从1字节到13字节不等。这个跟ARM还是有很大区别,ARM32位处理器的话,是定长指令,是32位长度。 8086~80286使用16位指令模式,80386以上处理器也可以工作在16位指令模式,两者是兼容的。16位模式和32位模式,其指令机器码格式有一些差别,具体格式如

IA32体系结构2(x86寻址方式)

数据寻址方式 8086~80286微处理器的数据寻址方式包括: 1.寄存器寻址 2.立即寻址 3.直接寻址 4.寄存器间接寻址 5.基址加变址寻址 6.寄存器相对寻址 7.相对基址加变址寻址 80386以上处理器还包括: 8.比例变址方式的存储器数据寻址 一些说明 这么多的寻址方式,有些比较直观,有些就很头大,什么叫基址加变址寻址?这要从x86的寄存器说起,话说x86有8个

IA32体系结构1(x86寄存器)

Intel Architecture 32位处理器,主要以80386为参考。包括以下几类寄存器: 1.通用寄存器 2.段寄存器 3.状态和控制寄存器 4.指令指针寄存器EIP 5.内存管理寄存器 6.控制寄存器 通用寄存器 通用寄存器有8个,分别是EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。intel通用寄存器很少,比起ARM动不动30多个,要少很多,inte

IA32体系结构8(x86过程调用)

直观感受及疑问 正常情况下,CPU执行指令都是一条条顺序往下执行。所谓过程调用,就是CPU停止执行下一条指令,转而去执行其它地方的指令。当这些指令执行完毕之后,CPU回到之前暂停的下一条指令,重新开始执行。有点类似C语言的“函数调用”。那么,我们有几个问题需要弄清楚: 1.我们的指令中,如何跳转到过程调用指令,又如何回来? 2.跳过去又回来,CPU是如何记住之前的执行位置的? 3.如果过程

IA32中栈帧结构图

帧栈结构图:最近在研究如何在程序crash定位出错函数,补充的计算机系统基础知识。此篇主要是介绍IA32中帧栈结构(frame stack).  调用函数时,系统会采用程序栈来support函数调用,其中寄存器ESP 和 EBP 分别计算栈帧的stack(栈顶) 和 frame(栈底),注意返回调用函数的地址以及ESP调用函数栈底在栈中的存储。主要依靠此值定位出错函数。详情参照《深入理解计算机系

汇编指令基础(一)——以IA32学习

汇编指令基础(一)——以IA32学习 IA整数寄存器结构 寻址方式(IA32) 类型格式操作数值名称立即数$ImmImm立即数寻址寄存器EaR[Ea]寄存器寻址存储器ImmM[Imm]绝对寻址存储器(Ea)M[ R[Ea] ]间接寻址存储器Imm(Eb)M[ Imm + R[Eb] ](基址 + 偏移量)寻址存储器(Eb, Ei)M[ R[Eb] + R[Ei] ]变址寻址存储器Imm(

IA32中的5种caching type(也叫memory type)

https://www.cnblogs.com/aoaoblogs/archive/2010/12/25/1917009.html