1. “opcode前缀——66h”对size of oprand的影响
分为两种情况,oprand的值在寄存器中或者在内存中。
如果oprand的值在寄存器中,那么当default size of oprand = 32bit时,66h使得寄存器被解析为16bit的寄存器,否则,66h使得寄存器被解析为32bit的寄存器。下面是在win32程序中(default size of oprand = 32bit)中的例子:
8bc3:mov eax, ebx
66 86c3:mov ax, bx
如果oprand的值在内存中,那么当default size of oprand = 32bit时,66h将oprand由默认的占4个字节改为占2个字节,否则,66h将oprand由默认的占2个字节改为占4个字节。下面是在win32程序中(default size of oprand = 32bit)中的例子:
ff00:inc dword ptr [eax]
66 ff00:inc word ptr [eax]
2. “opcode的[w]bit”对size of oprand的影响
分为两种情况,oprand的值在寄存器中或者在内存中。
如果oprand的值在寄存器中,那么:
[w] = 1:寄存器被解析为32bit或者16bit,具体取决于default size of oprand以及是否存在前缀66h。
[w] = 0:寄存器被解析为8bit,即《tutorial of opcode by svin》中的partial registers。
下面是具体的例子:
f7e0:mul eax
66 f7e0:mul ax
f6e0:mul al
以上是在win32程序中(default size of oprand = 32bit)的结果,可以看到,[w]bit和指令前缀66h的区别。指令前缀66h的最用是“use oprand size opposit to default”,而default size of oprand只可能是32bit 或者16bit,所以,仅仅使用指令前缀66h无法访问8bit的寄存器(partial registers)。
如果 oprand的值在内存中,那么:
[w] = 1:oprand占4字节或者2字节,具体取决于default size of oprand以及是否存在前缀66h。
[w] = 0:oprand占1字节。
下面是具体的例子:
f720:mul dword ptr [eax]
66 f720:mul word ptr [eax]
f620:mul byte ptr [eax]
以上是在win32程序中(default size of oprand = 32bit)的结果。指令前缀66h只能使oprand在32bit与16bit之前进行切换,无法访问内存中1字节的值。
分享到:
相关推荐
OpcodeMap
编写汇编编译器机器码opcode编译器机器码
本资源是Opcode命令的集合,你可以方便的查阅到各种Opcode命令,希望对你会有帮助。
php opcode的反解,用于分析PHP ,逆向PHP 加密,由OPCODE转换PHP代码. WINDOWS 版本的使用: 开始,运行,CMD 进入PHP所在目录,执行: Php.exe –c php.ini 111.php 回车,即可查看:111.php 的OPCODE值. 用这个工具,可以...
x86 opcode structure and instruction overview
Opcode机器码的对应解析位图,有助于更好的去解析Opcode机器码。
汇编指令之OpCode快速入门,关于操作码得东西,比较少见。
arm和thumb指令的详细opcode,便于指令查询和熟悉指令。
包含机器指令规范 操作码查询表 指令时钟周期查询表
Ogre轻量级碰撞检测。一些简单的漫游,并不需要大的物理引擎支持,简单的碰撞检测,用Opcode完全可以轻松实现。
Svin的OpCode教程,自己看那看。 Svin的OpCode教程
f`OpCode,关于操作码得东东。
本人是从0开始自学Emit的,中间比较难受的就是好多Opcpde指令不知道是什么意思、不会用,后来经过查资料总算是搞明白点了。 除了在网上查资料之外学习MSIL另一个好方法就是.Net Reflector和ildasm.exe配合使用,...
Inter x86eas.hlp (opcode 手册)和 win7、win8查看hlp的驱动
vivado实现ALU模块,Opcode实现8命令格式和3地址索引 表格中一共有八个算术和逻辑指令。它们是 ADD、SUB、AND、OR、XOR、NOT、SRA 和 SLL。其中 ADD、SUB、AND、OR、XOR 和 NOT 指令具有三地址格式。这些指令的汇编...
0x01 OpCode opcode又称为操作码,是将python源代码进行编译之后的结果,python虚拟机无法直接执行human-readable的源代码,因此python编译器第一步先将源代码进行编译,以此得到opcode。例如在执行python程序时...
C程序编写的pe反汇编源代码, 可以用于在软件保护当中,动态分析代码,防止hook。
不管计算机技术的发展如何日新月异,其最基本的东西是不会突然改变的。OpCode就是这其中的一样东西
根据NVMe 1.4c版本NVMe协议摘录的Opcode和SC列表,方便日常工作使用时查阅,不用反复查找协议。
这是一个ogre+opcode物理碰撞的例子,源代码哦!是个很好的学习资源