我刚刚开始了一个更大的项目,完全用Assembly编码。拥有多个子例程、宏、内存表等,我想知道如何最好地将代码拆分为多个文件。目标显然是更好的结构和更好的可读性。
目前,我使用一个.inc-file,其中包含我所有的常量定义(.equ
),但如何处理我的许多子例程?如果我想把它们放在另一个文件中,我需要使用.asm文件吗(因为它包含可执行代码)?更一般地说:.asm-和.inc-file之间有什么区别,尤其是在最后将它们包含到一个主文件中?
一旦我拆分了文件,我如何处理多个依赖关系(即文件A包括文件B和C,其中文件B也包括文件C)。显然,我目前的环境,Atmel Studio 6,不喜欢双重包含。
还有一个更复杂的问题,那就是寄存器分配。由于您正在编写所有代码,如果更多的函数需要特定的寄存器,并且一个函数调用另一个函数,您可能会遇到麻烦。C编译器足够聪明,可以根据优化设置进行处理。因此,令人惊讶的是,大型ASM项目的效率可能不如C代码。