ZHCUAQ1F july 2015 – april 2023
C6000 编译器将内存视为单线性块,该块被划分为代码子块和数据子块。C 程序生成的每个代码子块或数据子块都放置在其自己的连续内存空间中。编译器假定目标内存中有完整的 32 位地址空间可用。
由链接器而不是编译器定义内存映射并将代码和数据分配到目标内存中。编译器不考虑可用内存的类型、不考虑代码或数据(漏洞)的任何不可用的位置,也不考虑为 I/O 或控制目的保留的任何位置。编译器生成可重定位代码,允许链接器将代码和数据分配到合适的内存空间中。例如,可以使用链接器将全局变量分配到片上 RAM 中或将可执行代码分配到外部 ROM 中。可以将每个代码块或数据块单独分配到内存中,但这不是通用做法(一个例外是内存映射 I/O ,尽管可以使用 C/C++ 指针类型访问物理存储器位置)。