首页 > TAG信息列表 > ModR

经典变长指令-SIB

一、回顾Mod/M结构 Intel 64 and IA-32 Architectures Instruction Format SIB由ModR/M来决定,同时Displacement(偏移)和Immediate(立即数)也是由ModR/M来决定 二、SIB的组成部分(结构图) 三、示例 88 84 48 1、88-->是Opcode,查Table A-2表-->得出操作指令是MOV 2、88的具体含

32位指令格式——寻址方式

ModR/M: # Mod & R/M:Mod字段与R/M字段组合形成寻址模式。 # Reg/Opcode:寄存器编号或操作码的扩展。   SIB: # Scale:比例因子# Index:索引寄存器的寄存器编号# Base:基址寄存器的寄存器编号   ModR/M 寻址方式表: 16bits 32bits   SIB 寻址对应表:

32位指令格式——示例(二)

mov al, cl: 1. 找到对应指令和操作码: Opcode=88 # /r:表示指令的ModR/M中包含一个寄存器操作数和一个R/M操作数。   2. 查看ModR/M寻址方式表: # ModR/M.Mod=11 # ModR/M.Reg/Opcode=001 # ModR/M.R/M=000 ModR/M = 11 001 000 = C8H   3. 机器码:88C8

32位指令格式——示例(三)

mov word [bx+si+3], 0xAA55: 1. 找到对应指令和操作码: Opcode=C7 ModR/M.Reg/Opcode=000 # /digit:digit是0~7间的数字。将其转换成二进制对应于ModR/M中的Reg/Opcode字段。 # iw:表示指令中的立即数是2字节。   2. 查看ModR/M寻址方式表: # ModR/M.Mod=01 # ModR/M.R/M=000 Mod

32位指令格式——示例(四)

  add dword [eax+ebx*8+0x3C00], edx: 1. 找到对应指令和操作码: Opcode=01 # /r:表示指令的ModR/M中包含一个寄存器操作数和一个R/M操作数。   2. 查看ModR/M寻址方式表: # [--][--]:表示ModR/M后有SIB。 # ModR/M.Mod=10 # ModR/M.Reg/Opcode=010 # ModR/M.R/M=100 ModR/M =