我想汇编一个x86文件,同时确保代码可以在给定的处理器上运行,而不必在处理器仿真器上对其进行测试。

是否有工具/技术可以让我根据支持它的最旧的所需处理器来进行某种x86指令分类,或者至少在使用不兼容指令时发出警告?

简而言之,我正在寻找this Wikipedia table of x86 instruction listings的自动化版本,以帮助我检查给定的代码是否应与给定的处理器兼容。

最佳答案

简而言之,我正在寻找x86指令清单的Wikipedia表的自动化版本,以帮助我检查给定的代码是否应与给定的处理器兼容。


您可以使用以下指令发出临时程序集文件:

[CPU level]


其中level是以下之一:


8086仅汇编8086指令集
186汇编最多80186条指令集的指令
286汇编最多286条指令集的指令
386最多汇编386条指令集的指令
486 486指令集
586奔腾指令集
PENTIUM与586相同
686 P6指令集
PPRO与686相同
P2与686相同
P3奔腾III(Katmai)指令集
KATMAI与P3相同
P4奔腾4(Willamette)指令集
WILLAMETTE与P4相同
PRESCOTT Prescott指令集
X64 x86-64(x64 / AMD64 / Intel 64)指令集
IA64 IA64 CPU(x86模式)指令集


然后是您的代码。然后调用NASM汇编该文件,并观察NASM的退出状态和错误消息。如果您不使用NASM,则TASM / MASM也有类似的指令。



一个例子:

test8086.asm

[cpu 8086]
cmovne eax,ebx  ; Not a part of the 8086 instruction set




C:\nasm>nasm -f bin -o test8086.com test8086.asm
test8086.asm:2: error: no instruction for this cpu level

C:\nasm>echo %errorlevel%
1

关于assembly - 检查给定的程序集文件是否应在给定的处理器上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31510329/

10-11 18:42