Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何将NASM应用程序分解为模块/包并包含它们?_Assembly_Nasm - Fatal编程技术网

Assembly 如何将NASM应用程序分解为模块/包并包含它们?

Assembly 如何将NASM应用程序分解为模块/包并包含它们?,assembly,nasm,Assembly,Nasm,我开始学习汇编语言了。我对它基本上很熟悉。我想知道程序集中的应用程序有多大,也就是说,如何将它们拆分为模块/包,并将它们包含到其他模块中?我特别说的是NASM。您可以: 使用 将外部文件包括到当前文件中。 这可以通过命令行开关进一步控制 您还可以使用开关强制NASM预包含文件 组合多个文件 由于NASM不是链接器,您可以利用链接器的能力。。。好吧,把文件链接在一起 使用指令使一组符号对其他模块可见。 使用指令从其他模块导入一组符号 您可以将所有对象文件传递给链接器。 NASM(就像今天一样)一

我开始学习汇编语言了。我对它基本上很熟悉。我想知道程序集中的应用程序有多大,也就是说,如何将它们拆分为模块/包,并将它们包含到其他模块中?我特别说的是NASM。

您可以:

  • 使用
    将外部文件包括到当前文件中。
    这可以通过命令行开关进一步控制

    您还可以使用开关强制NASM预包含文件

  • 组合多个文件
    由于NASM不是链接器,您可以利用链接器的能力。。。好吧,把文件链接在一起

    使用指令使一组符号对其他模块可见。
    使用指令从其他模块导入一组符号

    您可以将所有对象文件传递给链接器。
    NASM(就像今天一样)一次只能组装一个文件,因此需要一个构建脚本



上述两种方法并不相互排斥,但您必须基本了解该方法,以了解后者何时适用

(这是有偏见的观点,所以请考虑一下)大型汇编应用程序通常被组织成C++应用程序,只使用少数几个关键部分的程序集。用一个合理编写的C++源代码,机器代码的平均质量将比手写汇编容易得多,而少数关键部件在编译器第一次使用之后更容易调整。因此,不要期望找到一些用于大型asm项目管理的高度复杂的工具。实际上有几个,叫做C、C++、爪哇、C等。Ped7g,不正确。