作者:漂浪男孩2010_218 | 来源:互联网 | 2022-12-07 22:32
我正在尝试学习x86-64
新的AVX-512指令,但是我的计算机均不支持它们。我试着用各种反汇编(从Visual Studio网上的:1,2)看看具体操作码的编码指令,但我发现有些矛盾的结果。另外,运行一些指令并查看其实际输出会很好。
所以我想知道是否有一个在线服务可以编译小的(x86-64)汇编代码并在特定处理器上运行或逐步执行?(说,英特尔的Sandy Bridge
,Cannon Lake
等等)
1> Peter Cordes..:
使用英特尔®软件开发仿真器(又名SDE)在支持未来指令集的仿真CPU上运行可执行文件。它是免费软件(不是开放源代码,而是免费下载),并且可用于Linux,Windows和OSX。
https://software.intel.com/zh-cn/articles/debugging-applications-with-intel-sde提供了有关如何在Windows或Linux上进行调试的分步说明:SDE可以用作GDB远程服务器,因此您可以运行sde -debug -- ./your-program
,然后在另一个终端中运行gdb ./your-program
并用于target remote :portnumber
连接到SDE流程,从而可以设置断点和单步执行。
如果QEMU添加了对模拟AVX512的支持,则您也许可以对QEMU做同样的事情。QEMU也可以充当GDB远程服务器。
QEMU绝对具有可配置的指令集,例如,您可以告诉它使用AVX而不是AVX2(如Sandybridge)来模拟x86。SDM可能做同样的事情。
如果要验证您的CPUID检查没有假设任何暗示任何其他无法保证的内容,您甚至可以告诉它模拟在真实硬件上找不到的东西,例如AVX2,但不能模拟BMI1 / 2。
请记住,它们对于性能测试基本上是无用的,仅用于矢量化的正确性。 IACA可能对了解SKX的性能很有用,但是它远非完美,并且根本没有建模内存瓶颈。(仅在某些详细级别上使用实际的管道。)