2017-01-05 22 views
3

我开始学习汇编语言。我在基础层面熟悉它。我想知道,Assembly中有多大的应用程序是组织的,也就是说,我怎样才能将它们分解成模块/包并将它们包含到其他模块中?我特别在谈论NASM。如何将NASM应用程序分解为模块/包并包含它们?

+1

(这是严重的意见偏置,所以采取与一粒盐)大装配应用通常被组织为C++程序,使用大会只对少数最关键的部分。使用合理编写的C++源代码,生成的机器代码的平均质量将轻松胜过手写汇编,并且在编译器初次使用之后,少数关键部分也更容易调整。所以不要指望为大规模项目管理找到一些高度复杂的工具。其实有几个,叫做C,C++,Java,C#等等......) – Ped7g

+0

@Ped7g,不正确。 – ako25

回答

3

您可以:

  • 使用%include
    包含一个外部文件到当前一个。
    这可以通过-i命令行开关进一步控制。

    您还可以强制NASM预包括使用-p交换机上的文件。

  • 组装多个文件
    由于NASM不是一个链接,你可以采取的链接器的能力的优势...好,链接文件一起。

    使用GLOBAL指令,使一组对其它模块可见的符号。
    使用EXTERN指令从其他模块导入一组符号。

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


上述两者并不相互排斥的,但你必须了解基本的NASM output file formats看到,当后者是适用的。

相关问题