百科问答小站 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...)。

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




  

相关话题

  malloc申请的内存能是虚拟内存吗,也就是申请的一块新的空间,刚申请就缺页吗? 
  怎么看待 Linus 和 Richard Stallman 对 C++ 的态度? 
  仅仅从好玩程度考虑,做编译器或操作系统哪个更有趣味? 
  Unix网络编程里的阻塞是在操作系统的内核态创建一个线程来死循环吗? 
  被诺基亚放弃后,Qt的未来在哪里? 
  如何看待胡渊鸣创业成立太极图形团队? 
  C++ 中,如果指针换了被指向的东西,那被指向的原来的东西(是被 new 出来的)所占的内存会立刻被释放吗? 
  大一新生做C语言课设被强制要求使用 Borland C++ 3.1,此IDE相对于其他IDE有何优点? 
  C++在构造函数内new对象的最佳实践是什么? 
  如何理解《Effective C++》第31条将文件间的编译依赖关系降低的方法? 

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





© 2025-05-30 - tinynew.org. All Rights Reserved.
© 2025-05-30 - tinynew.org. 保留所有权利