SDCC:小型设备C编译器介绍

需积分: 16 3 下载量 38 浏览量 更新于2024-09-01 收藏 115KB PDF 举报
"Small_Device_C_Compiler.pdf 是一份关于小型设备C编译器SDCC的文档,主要讨论了这个开源工具链的特点、功能以及与其他类似工具的比较。SDCC是针对8位微控制器设计的交叉编译工具链,支持多种处理器架构,并提供了预处理器、编译器、汇编器、链接器、调试器、模拟器和库等功能。它遵循C89/C99/C11标准但不支持C++。SDCC是命令行工具,适用于生产环境,并采用GPLv2等许可证开源。 SDCC支持的目标处理器包括MCS-51/DS390/DS400、ST7/STM8、HC08/HCS08、Z80/Z180/GBZ80/R2000/R3000A、TLCS90、PIC16/PIC18(不完整)、AVR(已放弃)。此外,文档提到了与Keil、IAR、GCC、Cosmic、MPLAB和Metroworks等其他知名嵌入式开发工具的相似性。 工具链组件包括: 1. sdcpp:基于gcc-4.6的预处理器 2. sdcc:编译器本身 3. sdas:与GNU as兼容的汇编器 4. sdld:链接器 5. sdbinutils:基于较旧版本的binutils 6. ucsim:支持多种目标的模拟器 7. 库:通用库和架构相关的库 SDCC还引入了一些特定的扩展关键字,如: 1. __data, __idata, __xdata, __pdata, __bit, __code:用于内存空间的指定 - __idatainta; // 数据存储区的整型变量 - __xdatalong*__datap; // 外部数据存储区的长整型指针 - __bitc; // 位变量 - char(*__pdatafp)(void); // 数据存储区的函数指针 2. __sfr, __sfr16, __sft32, __sbit:用于定义特殊功能寄存器 - __sfr__at(0x80)P0; // 定义地址为0x80的8位特殊功能寄存器 - __sfr16__at(0x8C8A)TMR0; // 16位特殊功能寄存器 - __sbit__at(0xd7)CY; // 定义地址为0xd7的位寄存器 文档中的这些扩展关键字和功能使SDCC能够更有效地针对8位微控制器进行编程,提供了一种灵活且高效的开发环境。对于需要在有限资源的嵌入式系统上编写C代码的开发者来说,SDCC是一个强大且经济实惠的选择。"