IA-32

     IA-32指Intel Architecture-32bit,也就是从8086发展而来的32位处理器结构。IA-32的指令格式沿用了16位8086的格式,在其基础上做了向32位的拓展:
                         前缀|操作码|寻址方式和操作数类型|立即数|偏移量
其中,前缀是可选的,且可以有多个。前缀有重复前缀,比如REP,段超越前缀,比如ES:等等;操作码就是真正的instruction,比如add,sub,mov等等;寻址方式和操作数类型除了指出如何寻址和操作数类型外,还会指出指令要使用的寄存器的名称;立即数略;偏移量只有使带偏移的寻址方式时才有效。
    32位指令格式沿用了上述定义,但是格式中对寄存器和寻址方式的定义却不同。这导致同样的机器码,在16位模式下运行和在32位模式下运行会是不同的结果。比如机器码:8b 50 02,16位下对应的指令是mov dx,[bx+si+0x02],32位下对应的指令则是mov edx,[eax + 0x02]。前缀"0x66"可以"反转"指令运行模式,也就是说0x66告诉CPU,以与当下模式相反的模式运行该条指令。比如16位模式下,CPU读入指令66 8b 50 02,那么实际运行的是mov edx,[eax + 0x02]——16位模式下利用0x66依然可以访问32位寄存器。
    16位和32位模式在指令格式上的差异也导致汇编语言必须向汇编器指明代码的运行环境。关键字"bits 16"和"bits 32"可以达到这个目的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值