我想汇编一个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/