MCS51 选项(SDCC手册节选)
- -model-small 生成small模式程序的代码,更多细节可参见内存模型章节。这是默认的模式。
--model-medium 生成medium模式程序的代码,更多细节可参见内存模型章节。如果使用此选项,项目中的所有源文件都必须使用此选项编译。链接时也必须使用此选项。
--model-large 生成large模式程序的代码,更多细节可参见内存模型章节。如果使用此选项,项目中的所有源文件都必须使用此选项编译。链接时也必须使用此选项。
--model-huge 生成huge模式程序的代码,更多细节可参见内存模型章节。如果使用此选项,项目中的所有源文件都必须使用此选项编译。链接时也必须使用此选项。
--xstack 在__pdata区域(通常是外部RAM的前256字节)使用伪堆栈分配变量和传递参数。有关更多细节,请参见3.15.1.2外部堆栈章节。
--iram-size <值> 使链接器检查内部RAM使用是否在给定值的限制范围内。
--xram-size <值> 使链接器检查外部RAM使用是否在给定值的限制范围内。
--code-size<值> 使链接器检查代码内存使用是否在给定值的限制范围内。
--stack-size <值> 使链接器检查堆栈是否至少有<值>字节。
--acall-ajmp 用两字节指令acall/ajmp替换三字节指令lcall/ljmp。只有在代码在同一个2K块内存中时才能使用此选项。对于某些缺少lcall/ljmp指令的
- 8051衍生物,可能需要使用此选项。
--no-ret-without-call 使代码生成器在非函数返回的上下文中使用ret指令时插入一个额外的lcall或acall指令。使用芯片系列Infineon XC800时需要此选项以保持其内存扩展堆栈的平衡。
使用此选项后,SDCC会检查堆栈、内部RAM、外部RAM和代码内存使用情况,并确保其使用量不超出用户指定的限制。此外,SDCC还可以使用伪堆栈分配变量和传递参数,以及在某些特殊情况下,将lcall/ljmp替换为acall/ajmp。