百科问答小站 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++ 语言会不会在十年内退出市场? 
  如果编译器遇到未定义行为把硬盘格式化了,需要负法律责任吗? 
  计算机大牛们,看C++有关书籍是不是一遍就看懂了,总感觉自己笨,有些地方需要看几遍才懂? 
  华为公布的方舟编译器到底对安卓软件生态会有多大影响? 
  c++的单例模式为什么不直接全部使用static,而是非要实例化一个对象? 
  intel x86指令编码存在多个选择时如何选定opcode? 
  为什么标准库的map要insert(pair(key,value))而不是insert(key,value)? 
  我怎样成为@vczh一样的大神? 
  C/C++中按值传递比按地址传递更快吗, 引用呢? 
  大公司为什么无法轻松使用更新的c++版本? 

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





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