摘要: 帧栈结构是一种机器实现切换上下文的机制。具体介绍看 http://blog.csdn.net/yxysdcl/article/details/5569351 IA32体系涉及寄存器保存问题,%eax,%ecx,%edx由调用者保存,%ebx,%esi,%edi由被调用者保存,%esp,%ebp分别是 阅读全文
posted @ 2016-06-28 20:27 胡韬 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 从机器的角度考虑过程就是控制转移,数据传递,局部变量分配的过程。但是大多数机器只提供控制转移这种指令,后两种功能由栈实现。 从操作系统的角度考虑,过程就是两个进程切换,控制从进程1到进程2,以及上下文切换,这个过程完全由操作系统完成。 阅读全文
posted @ 2016-06-28 20:18 胡韬 阅读(118) 评论(0) 推荐(0) 编辑
摘要: jmp指令可以是直接跳转也可以是间接跳转。 直接跳转ATT jmp Lable 无条件跳转,一般相对于PC 间接跳转ATT jmp *adr 无条件跳转,常见于switc语句中 阅读全文
posted @ 2016-06-28 20:13 胡韬 阅读(1248) 评论(0) 推荐(0) 编辑
摘要: 1.条件码 cpu除了维护整数寄存器外,还维护着一组单个位的条件码寄存器,它们用于描述最近的算术/逻辑操作的属性。 例:CF,进位标示 ZF,零标示 SF,符号标示 OF,溢出标示 2.访问条件码 条件码寄存器不能直接读取,有三种方法: set指令:根据条件码,设置一个字节。 jump指令:根据条件 阅读全文
posted @ 2016-06-26 23:09 胡韬 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 3.5.1加载有效地址Leal leal S,D S是存储器,D为寄存器。 例如:leal (%eax),%edx (%eax)表示的是存储器内容,%eax是存储器地址,leal指令完成的是将存储器地址放到%edx中。(%eax)可以换成Imm(Rb,Ri,k)。 leal指令也可用于简单的计算。 阅读全文
posted @ 2016-06-26 21:26 胡韬 阅读(167) 评论(0) 推荐(0) 编辑
摘要: MOV分成三类,第一类不需要拓展(MOV),第二类做符号拓展(MOVS),第三类做零拓展(MOVZ),拓展类型根据源操作数决定。 这三类根据操作的数据类型其后可加l,w,b。 MOV操作的操作数可以是寄存器,也可是存储器,但不可两个都是存储器。 第一个是源操作数,第二个是目的操作数。 pop和pus 阅读全文
posted @ 2016-06-24 18:10 胡韬 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 操作数三种类型: 1.立即数(i),$后跟一个C表示的整数,$Imm,即Imm。 2.寄存器(E),例如%eax,%ax等,Ea,即R[Ea]。 3.存储器(M),直接跟C表示的数字,Imm(Eb,Ei,s),即M[Imm+R[Eb]+R[Ei]*s] 寻址模式:由四个部分组成。 Imm(Eb,Ei 阅读全文
posted @ 2016-06-24 17:40 胡韬 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 1.指令集体系结构(ISA),定义了处理器状态,指令的格式以及每条指令对状态的影响。常见ISA有IA32,x86-64,MIPS 2.存储器地址是虚拟地址。 阅读全文
posted @ 2016-06-24 17:22 胡韬 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 操作系统位于计算机软件和硬件之间,有两大好处。 1.防止失控的程序滥用硬件。 2.向软件提供统一的的机制来控制复杂而又通常大相近庭的硬件。 操作系统提供三种抽象。 1.进程,进程是os对一个正在运行的程序的一种抽象。看上去好像只有一个程序在使用处理器,主存,I/O设备。需要提供的是上下文切换机制,比 阅读全文
posted @ 2016-06-24 16:18 胡韬 阅读(147) 评论(0) 推荐(0) 编辑
摘要: unix> ./hello hello world unix> ll 显示当前目录下文件信息。 shell为命令行解释器,第一个单词可以是内置的外壳命令,也可以是一个可执行文件名。 阅读全文
posted @ 2016-06-24 15:33 胡韬 阅读(862) 评论(0) 推荐(0) 编辑