ZHCADC4A September 2011 – March 2014
抽象约定将变量指定为 near 或 far,如下所示:
工具链可以支持其他模型,但必须至少支持这三种模型。如果使用其他模型,则可能会也可能无法实现与其他工具链的互操作性。
如果指定依赖于工具链特定方面(如命令行选项或语言扩展),程序员有责任在声明变量的地方始终使用这些构造,但需要由链接器来捕获错误(请参阅 节 4.2.2.3)。
ABI 建立了变量到段的传统赋值。变量的赋值是其 near/far 指定及其初始化类别的函数,由以下列表中的第一个匹配条件确定。
表 4-1 列出了传统的段赋值:
初始化类别 | |||
---|---|---|---|
名称 | 未初始化 | 已初始化 | 常量 |
.bss | .neardata | .rodata | |
far | .far | .fardata | .const |
传统赋值可以通过特定于工具链的方式被覆盖。例如,变量可以分配给用户定义的段。但是,工具链不得允许用户将指定为 far 的变量放置到三个 near 段中的任何一个中。