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

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




  

相关话题

  C++中key使用指针是否可以改变key指向的对象? 
  2022年学C++开发好比49年入国军,没什么公司在用C++了? 
  同一段代码,为什么有的编译器能编译通过,有的不能? 
  为什么编程语言中没有一种 if,来判断大概率为真(或假)的情况,来提升 CPU 分支预测的速度呢? 
  在C++中,为什么部分程序员喜欢在循环中写‘++i’而不是‘i++’? 
  雷军写代码水平如何? 
  C++ 11是如何封装Thread库的? 
  32位保护模式下,段基地址应尽量选取16字节对齐的那些地址,可使访问的性能最大化? 
  精通 C++ 是种怎样的体验? 
  能否把高版本的libstdc++静态连接到一个只暴露纯C接口的动态库中,给低版本c++程序调用? 

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





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