Python 你能在linux中编译/运行masm吗?

Python 你能在linux中编译/运行masm吗?,python,assembly,nasm,masm,Python,Assembly,Nasm,Masm,听起来像是一个愚蠢的问题,但我不知道该怎么问:我正在尝试创建一个python库,它将测试代码并返回一个结果,这恰好可以在linux和windows上工作。我能想到的有效执行CPUID的唯一方法是在汇编程序中对其进行编程,那么,有没有一种方法可以测试在独立于操作系统的机器上运行的程序的成功或失败,并将其构建到python中,或者更确切地说,有没有一种方法可以构建独立于操作系统的python库 Python文档不清楚这将如何工作。我是否需要制作两个库,一个windows和一个linux(我只是为了提

听起来像是一个愚蠢的问题,但我不知道该怎么问:我正在尝试创建一个python库,它将测试代码并返回一个结果,这恰好可以在linux和windows上工作。我能想到的有效执行CPUID的唯一方法是在汇编程序中对其进行编程,那么,有没有一种方法可以测试在独立于操作系统的机器上运行的程序的成功或失败,并将其构建到python中,或者更确切地说,有没有一种方法可以构建独立于操作系统的python库


Python文档不清楚这将如何工作。我是否需要制作两个库,一个windows和一个linux(我只是为了提高效率而尝试一个)?

因为我没有代表来写评论,所以我必须做出回答

<>你不能拥有“一个(动态)库来对它们进行管理”是因为Windows和Linux认为动态的LIB文件(.dll,.sO)是可执行的格式。Windows动态库具有PE头,Linux无法执行,反之亦然,Linux共享库必须具有ELF头,Windows无法执行。您的代码是否100%独立于平台并不重要

对于静态库,应该可以使其在Windows和Linux下都可翻译。如果做不到这一点,您可以将独立于平台的“lib”组装成通用格式,如COFF或BIN,并将其链接到当前使用的平台上。甚至可以使用某种形式的运行时链接

很抱歉,我使用了答案部分,没有提供细节。但是,如果您只是想在Linux和Windows上创建一个静态库,它将内联到您的代码中,那么这应该是可能的

编辑: 在做了一些研究之后,我发现不可能使用MASM来组装扁平二进制文件。显然,制造一个是违反EULA的?不管前面使用公共格式描述的过程如何,它都不会与MASM一起工作,因为它会生成PE/COFF作为“最低级别”的对象文件

因此,解决办法可能是:; 1) 将程序集移植到NASM(netwide assembler)之类的工具,它可以生成平面二进制文件

2) 使用QuasarDonkey非常复杂的方法剥离PE头以提取扁平二进制文件:

不管你如何得到平面二进制文件,你必须

在Linux上:将平面二进制文件链接为ELF可执行文件应该非常简单

平面二进制->ELF可执行文件

在Windows上:将PE/COFF头添加到平面二进制文件中,并将其链接到.exe/.dll文件中。微软的这一过程基本上是锁定的。我找不到任何关于如何做到这一点的例子。但理论上,这个过程是这样的

平面二进制-->PE/COFF->WINDOWS可执行文件

QuasarDonkey的方法可能是一种选择(这就是为什么我把它包括在内),但我永远不会推荐它


实际上,唯一直接的选择是为Windows编译一个库,为Linux编译一个库,使用MASMs PE/COFF格式作为基础是不现实的:)

因为我没有代表写评论,所以我必须回答

<>你不能拥有“一个(动态)库来对它们进行管理”是因为Windows和Linux认为动态的LIB文件(.dll,.sO)是可执行的格式。Windows动态库具有PE头,Linux无法执行,反之亦然,Linux共享库必须具有ELF头,Windows无法执行。您的代码是否100%独立于平台并不重要

对于静态库,应该可以使其在Windows和Linux下都可翻译。如果做不到这一点,您可以将独立于平台的“lib”组装成通用格式,如COFF或BIN,并将其链接到当前使用的平台上。甚至可以使用某种形式的运行时链接

很抱歉,我使用了答案部分,没有提供细节。但是,如果您只是想在Linux和Windows上创建一个静态库,它将内联到您的代码中,那么这应该是可能的

编辑: 在做了一些研究之后,我发现不可能使用MASM来组装扁平二进制文件。显然,制造一个是违反EULA的?不管前面使用公共格式描述的过程如何,它都不会与MASM一起工作,因为它会生成PE/COFF作为“最低级别”的对象文件

因此,解决办法可能是:; 1) 将程序集移植到NASM(netwide assembler)之类的工具,它可以生成平面二进制文件

2) 使用QuasarDonkey非常复杂的方法剥离PE头以提取扁平二进制文件:

不管你如何得到平面二进制文件,你必须

在Linux上:将平面二进制文件链接为ELF可执行文件应该非常简单

平面二进制->ELF可执行文件

在Windows上:将PE/COFF头添加到平面二进制文件中,并将其链接到.exe/.dll文件中。微软的这一过程基本上是锁定的。我找不到任何关于如何做到这一点的例子。但理论上,这个过程是这样的

平面二进制-->PE/COFF->WINDOWS可执行文件

QuasarDonkey的方法可能是一种选择(这就是为什么我把它包括在内),但我永远不会推荐它


实际上,唯一直接的选择是编译一个Windows库和一个Linux库,使用MASMs PE/COFF格式作为基础是不切实际的:)

Maybe use?,问题是Windows在编译器中使用专有语言。我需要windows库,但我对windows程序集的了解还不够。(注意内联在visual studio'15标题下)@Fred Larson只需要一些交叉编译方面的帮助/知识/启示您需要为Windows和Linux制作单独的Python扩展模块。但是,您可以从同一个源构建它们。我会对源代码进行条件化(例如使用
#ifdef
)以使用
u cpuid
intrin