菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
267
0

硬编码(1)

原创
05/13 14:22
阅读数 75839

什么是硬编码

 

指令编码的结构

 

 每一条指令,最短1字节,最长15字节

 

 

1、Intel对指令参数的设计了一种表示方式,格式是Zz一个大写字母加上一个小写字母。

2、大写字母表示寻找方式编码(寄存器,ModR/M,跳转相对地址,16:32地址格式等等),从A-Z共26种.

3、小写字母表示操作数的类型(byte,word,dword,fword等等不定,根据cpu模式或改写指令决定)  z有大约十几种表示方式。

4、他们的组合再加上纯寄存器表示了intel的所有操作对象。

经典定长指令上(修改寄存器)

1、PUSH/POP

 

 

 

 2.INC/DEC

0x40 - 0x47  INC ERX

0x48 - 0x4F  DEC ERX

 

 

 

 3、MOV Rb, Ib

0xb0 - 0xb7

 

 这个也是按八位寄存器顺序来的

4、MOV ERX, Id

0xb8 - 0xbF  

 

 5、XCHG EAX, ERX

0x90 - 0x97

 

 这里我们看到他只有eax和其他寄存器的交换,可以看出intel设计之初对0号寄存器是有特别照顾的

在定长指令下,cpu看到OPCode就知道了后面有几个数据要读,比如遇到90,就知道后面的都是其他指令码

相关热门文章

发表评论

0/200
267 点赞
0 评论
收藏