硬编码(1)

什么是硬编码

 

指令编码的结构

 

 每一条指令,最短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,就知道后面的都是其他指令码

posted @ 2021-04-04 21:12  Punished  阅读(251)  评论(0编辑  收藏  举报