计算机系统基础复习笔记——程序的转换及机器级表示

程序的转换及机器级表示

指令

微指令是微程序级的命令,属于硬件范畴。伪指令是由若干机器指令组成的指令序列,属于软件范畴

机器指令介于两者之间,处于硬件和软件的交界面。一般指令是指机器指令,汇编指令是机器指令的汇编语言表示形式。机器指令与汇编指令一一对应,都与具体机器结构有关,都属于机器级指令。

寻址方式

立即寻址:根据立即数寻址

寄存器寻址:根据寄存器编号寻址

位移:段+偏移量

基址寻址:段+基址寄存器

基址加位移:段+基址寄存器+位移

比例变址加位移:段+变址寄存器*比例系数+位移

基址加比例变址加位移:段+变址寄存器*比例系数+基址寄存器+位移

相对寻址:程序计数器+位移

IA-32常用指令

传送指令:

  • MOV:包括movb,movw,movl
  • MOVS:符号扩展传送指令,如movsbw
  • MOVZ:零扩展传送指令,高位扩0,如movzwl
  • XCHG:数据交换
  • PUSH:先将栈顶指针下移,再将数据送到sp或esp指示的栈单元中 pushl表示双字压栈 pushw表示字压栈
  • POP: 现将数据从SP或ESP指示的栈单元送到指定寄存器中,再执行栈顶指针上移的操作

地址传送指令

  • LEA:可用来做加法

定点算术运算指令

  • MUL:无符号数乘 源操作数存放在AL/AX/EAX中,相应结果存放在AX或DX-AX中或EDX-EAX中
  • IMUL:带符号整数乘 若给定两个操作数DST和SRC,则结果n位存放在DST中
  • DIV:无符号数除:被除数存放在AL/AX/EAX中,商和余数分别存放在AL/AH,或者被除数是32位,则存放在DX-AX中,商给AX,余数给DX,若被除数是64位,则存放在EDX-EAX,商存放EAX,余数在EDX中

逻辑运算指令

  • NOT:取反
  • AND:按位与
  • OR:按位或
  • XOR:按位异或
  • TEST:按位与,取ZF判断

移位指令

  • SHL:逻辑左移
  • SHR:逻辑右移
  • SAL: 算术左移
  • SAR:算术右移

控制转移指令

  • JMP: 无条件转移指令
  • jc:CF=1转移
  • jnc:CF=0转移
  • je:ZF=1转移
  • jne:ZF-0转移
  • js:SF=1转移
  • jns:SF=0转移
  • jo:OF=1转移
  • jno:OF=0转移
  • ja:无符号A>B
  • jae:无符号A ≥ \ge B
  • jb: 无符号 A < B A<B A<B
  • jbe: 无符号 A ≤ B A\le B AB
  • jg: A > B A>B A>B
  • jge: A ≥ B A\ge B AB
  • jl: A < B A< B A<B
  • jle: A ≤ B A\le B AB

条件设置指令

  • CMP:通过执行减法设置标志位

调用指令

  • CALL

IA-32的寄存器使用约定

  • 调用者保存寄存器: EAX,ECX,EDX
  • 被调用者保存寄存器:ESI,EBX,EDI

复杂数据类型的分配和访问

结构体

数据成员存放在一段连续的存储区中(不共用)

联合体

数据成员共享空间

数据对齐

不同类型按其数据长度进行对齐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值