当前位置: 首页 > news >正文

门户网站 建设 通知wordpress略缩图压缩

门户网站 建设 通知,wordpress略缩图压缩,网站建设 笔记,汕头市企业网站建设服务机构我们在前两节的硬编码中学习了定长指令,接下来学习变长指令 对于定长指令,我们通过opcode便可知该指令的长度,但是对于变长指令却是不可知的。变长指令长度由opcode,ModR/M,SIB共同决定。变长指令通常在需要操作内存的…

我们在前两节的硬编码中学习了定长指令,接下来学习变长指令

对于定长指令,我们通过opcode便可知该指令的长度,但是对于变长指令却是不可知的。变长指令长度由opcode,ModR/M,SIB共同决定。变长指令通常在需要操作内存的时候使用

经典变长指令

接下来我们观察一些常见的变长指令:

变长指令

汇编代码

0x88

MOV Eb, Gb

0x89

MOV Ev, Gv

0x8A

MOV Gb, Eb

0x8B

MOV Gv, Ev

G:通用寄存器

E:寄存器/内存

b:字节

v:字、双字或四字,通常由当前CPU模式决定(此处使用x86环境)

ModR/M

当指令中出现内存操作对象的时候,就需要在操作码(opcode)后面附加一个字节来进行补充说明,这个字节被称为ModR/M,其只有一个字节宽度,用于内存寻址

在本节讲解中,默认Reg/Opcode部分为Reg(寄存器),Opcode(指令)以后再说

其中,Reg部分描述指令中的G部分,即源寄存器,如下是该部分对应寄存器的表示:

images/download/attachments/1015817/image2021-11-1_21-43-22.png

Mod部分和R/M部分共同描述指令中的E部分,即目标寄存器/内存。

通过Intel操作手册中表Table 2-2便可知道ModR/M是如何使用的

images/download/attachments/1015817/image2021-11-1_21-53-38.png

手动解析指令

0x88 0x01

接下来以0x88 0x01为例,讲解如何解析变长指令

如下是0x88 0x01的解析部分:

Opcode

ModR/M

0x88 - MOV Eb, Gb

0x01

接着我们拆分ModR/M为其内部的三个部分:

Mod

Reg

R/M

0

0

0

0

0

0

0

1

然后我们开始依照Intel操作手册,一步步的分析该指令

images/download/attachments/1015817/image2021-11-1_22-9-1.png

由手册可知:

Reg:000对应寄存器AL

Mod:00和R/M:001对应[ECX]

因此我们得出结论:0x88 0x01对应的汇编代码为MOV BYTE PTR DS:[ECX], AL

0x88 0x10

接下来我们简单的解析0x88 0x10

Opcode

ModR/M

0x88 - MOV Eb, Gb

0x10

接着我们拆分ModR/M为其内部的三个部分:

Mod

Reg

R/M

0

0

0

1

0

0

0

0

通过查表可知:

Reg:010对应DL

Mod:00和R/M:001对应[EAX]

因此我们得出结论:0x88 0x10对应的汇编代码为MOV BYTE PTR DS:[EAX], DL

0x88 0x15

接下来我们简单的解析0x88 0x15

Opcode

ModR/M

0x88 - MOV Eb, Gb

0x15

接着我们拆分ModR/M为其内部的三个部分:

Mod

Reg

R/M

0

0

0

1

0

1

0

1

通过查表可知:

Reg:010对应DL

Mod:00和R/M:101对应dis32(32位立即数)

dis32跟在0x88 0x10后,现假设dis32为0x12345678

因此我们得出结论:0x88 0x10 0x12345678对应的汇编代码为MOV BYTE PTR DS:[78563412], DL

0x88 0x82

接下来我们简单的解析0x88 0x82

Opcode

ModR/M

0x88 - MOV Eb, Gb

0x82

接着我们拆分ModR/M为其内部的三个部分:

Mod

Reg

R/M

1

0

0

0

0

0

1

0

通过查表可知:

Reg:000对应AL

Mod:10和R/M:010对应[EDX] + dis32

此处假设dis32为0x12345678

因此我们得出结论:0x88 0x10 0x12345678对应的汇编代码为MOV BYTE PTR DS:[EDX + 78563412], AL

0x89 0x01

接下来我们简单的解析0x89 0x01

Opcode

ModR/M

0x89 - MOV Ev, Gv

0x01

由于我们使用的是CPU的x86环境,因此v表示32位

接着我们拆分ModR/M为其内部的三个部分:

Mod

Reg

R/M

0

0

0

0

0

0

0

1

通过查表可知:

Reg:000对应EAX

Mod:00和R/M:001对应[ECX]

因此我们得出结论:0x88 0x10对应的汇编代码为MOV DWORD PTR DS:[ECX], EAX

http://www.dtcms.com/a/411868.html

相关文章:

  • .net网站开发简介广州平面设计培训机构
  • 沭阳网站设计绿植网站怎么做
  • DVWA | XSS 跨站脚本注入
  • 建设银行网站公告在哪wordpress前台浏览量插件
  • Java的认识及环境搭载
  • 网站做著作权网络信息公司是做什么的
  • Milvus 2.6 Data-in, Data-out,简化向量搜索
  • 鄠邑区建设和住房保障局网站广东深圳龙岗区天气
  • 级a做爰片免费视网站看看如何判断网站被google k
  • 陕西建设技术学院网站网站超市安装
  • 【读书笔记】架构整洁之道 P2~3 编程范式设计原则
  • 基于 PyTorch 的 CIFAR-10 图像分类学习总结
  • (附源码)医院门诊综合管理系统
  • 做外贸经常用的网站网站中单选按钮怎么做
  • 国家合同模板网站wordpress 首页伪静态
  • vite是什么
  • 建设银联官方网站帮别人发广告赚钱平台
  • 【轨物方案】轨物科技|以数智化技术赋能成套开关柜
  • Android Studio 编辑器汉化解决方法(超简单)
  • 网站运营与推广计划书怎么做做网站客户给不了素材
  • 保山网站建设多少钱wordpress 文章排序
  • STM32 Hardfault异常调试-笔记
  • 网站做的好坏主要看公司做网站好吗
  • 太原找工作网站网站怎么做显得简洁美观
  • 凤岗镇仿做网站做网站哪个语言好
  • Kanass入门到实战(4) - 如何快速导入Jira、Mantis数据
  • JavaScript 事件冒泡与事件捕获
  • 外贸网站源码怎么建wordpress使用百度分享插件下载
  • C语言基础【26】:结构体2
  • 项目计划书模板10篇win7优化大师