MPLAB XC16: 汇编器伪指令详解 - 符号声明

需积分: 50 27 下载量 59 浏览量 更新于2024-08-09 收藏 2.8MB PDF 举报
"MPLAB® XC16汇编器、链接器和实用程序用户指南" 在编程和嵌入式系统开发中,伪指令是汇编语言中的一种特殊指令,它们并不直接影响处理器,而是被汇编器处理。在MPLAB® XC16环境中,这些伪指令用于管理内存布局和符号声明。以下是关于描述中提到的几种伪指令的详细解释: 1. **.bss symbol, length [, algn]**: 这个伪指令用于在`.bss`段中为局部符号预留空间。`.bss`段通常用于存放未初始化的数据。`length`参数定义了需要预留的字节数,而`algn`则指定了符号的对齐方式,对齐值必须是2的幂次。如果指定了对齐值,汇编器会确保分配的地址是该值的倍数。 2. **.comm symbol, length [, algn]**: `.comm`伪指令用于声明一个共享符号,可以在链接时与其他目标文件中的同名符号合并。如果链接器找不到符号的定义,它会在运行时为这个符号分配`length`字节的未初始化内存。`algn`参数同样表示符号的对齐要求,仅在目标文件格式为ELF时才有效。 3. **.extern symbol**: 这个伪指令声明了一个全局符号,该符号在其他模块中定义,但在当前模块中使用。这允许你在当前代码中引用一个在别处定义的全局变量或函数。 4. **.global symbol** / **.globl symbol**: 这两个伪指令是等价的,用于声明一个符号在当前模块中定义,并且可以被其他模块访问。这样定义的符号将成为全局变量或函数,可供整个程序使用。 5. **.lcomm symbol, length**: `.lcomm`伪指令用于声明一个局部的、未初始化的(在.bss段中)公共符号。`length`参数定义了符号的大小,这个符号不会被声明为全局变量,所以通常在链接时不会被看到。 这些伪指令在编写汇编代码或链接脚本时非常关键,它们帮助开发者有效地管理和组织程序的内存空间,以及确保符号的正确访问和可见性。在MPLAB® XC16汇编器中,理解并正确使用这些伪指令对于高效地编写和链接C或汇编代码至关重要。注意,由于Microchip Technology Inc.的知识产权保护,未经许可,不得擅自复制或使用相关技术。