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
。