小编Dy *_*der的帖子

x86 32位操作码,在x86-x64中有所不同或完全删除

我在x86-x64中查找了维基百科的x86向后兼容性,它说:

x86-64完全向后兼容16位和32位x86代码.因为完整的x86 16位和32位指令集仍然在硬件中实现而没有任何干预仿真,现有的x86可执行文件运行时没有兼容性或性能损失而重新编码以利用处理器设计的新功能的现有应用程序可以实现性能改进.

所以我测试了一些指令,看看有些指令实际上产生完全不同的操作码(而不仅仅是应用前缀),例如:INC/DEC.看(x86):

\ x40 inc eax
\x48 dec eax

在x86-x64中组装相同的产品时:

\ xff\xc0 inc eax

\ xff\xc8 dec eax

我试图弄清楚其他指令的原因和更多例子,这些指令具有产生不同操作码的相同症状.我熟悉x86-x64中的push,pop,call,ret,enter和leave不可用32位.

x86 assembly x86-64 cpu-architecture opcode

8
推荐指数
2
解决办法
2286
查看次数

标签 统计

assembly ×1

cpu-architecture ×1

opcode ×1

x86 ×1

x86-64 ×1