百科问答小站 logo
百科问答小站 font logo



intel x86指令编码存在多个选择时如何选定opcode? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

手册上就这么写的,另外,并非所有编码都是唯一的,有多种编码的指令很多:


比如ADD reg,reg这种,对于ADD AX,AX来说,就有两种编码可以选:

       01C0  ADD AX,AX 03C0  ADD AX,AX     

你给出的应该是后面的那个ADD AX, imm,这种指令有两种编码。05/04编码的长度比81/80的要短,所以一般都选择更短的那个:


除了ADD以外,像MOV这些,也有很多多选的编码:


立即数到寄存器的有两种编码,后边那种更短。

到AX的也有两种,后面的更短。

大多数与AL/AX/EAX相关的指令都有一个更短的编码(ADD/AND/TEST/SUB...)。

手册上就这么写的,具体编译器用哪个可能是习惯问题。




  

相关话题

  Java 的开发效率究竟比 C++ 高在哪里? 
  c++怎么在1到n这些数中随机产生k(k<n)个?当然,k个数互不相等。有什么比较好的写法吗? 
  编译器和反编译器哪个厉害,哪个更难于编写? 
  有人对 C++ 基本数据类型采用 int x{5}; 的方式进行初始化吗? 
  现在的编译器能把代码优化到什么程度? 
  程序在地址空间中的位置是何时,以及如何决定的? 
  Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java? 
  如何设计真正高性能的 spin_lock? 
  现在的编程语言越来越多,为什么 C 和 C++ 还没有被现在的时代淘汰呢? 
  c++ 中 结构体中的变量读写速度为什么比普通变量快? 

前一个讨论
这种接口的作用是什么?
下一个讨论
为什么要有年月日的历法系统?





© 2025-02-27 - tinynew.org. All Rights Reserved.
© 2025-02-27 - tinynew.org. 保留所有权利