32 位 GCC 编译器存储和操作 char 数组
32 Bit GCC Compiler storage and manipulation of char arrays
背景:我是 32 位编译器的新手,正在使用新采用的目标创建例程来为嵌入式系统操作字符数组:使用 GCC 32 位编译器的 SiLabs Leopard Gecko 处理器。
问题:我们的嵌入式系统内存有限,我正在尝试了解编译器如何存储 char 数组,以便我们有效地使用可用的 RAM 和闪存。编译器报告 RAM 使用量以 4 字节增量递增,这符合默认的 32 位字大小(即 char X[1] 到 char X[4] 全部导致 RAM 分配 4 个字节,char[5] 导致分配8 个字节的报告)。
据我了解,编译器会将所有变量存储为 32 位值(long 等除外)
问题:上面的内存报告是否暗示编译器创建了必要的汇编代码来将 char[4] 打包成单个 32 位字并处理字节解析,如果我要写一行如 char Y = 字符数组[2] ?
不是配置。 Silab Gecko 是基于 ARM M-3 的 uC。此 uC 对对齐敏感,并且链接器以这种方式放置对象以使地址可被 4
整除以避免对齐问题。它在链接描述文件中定义。
背景:我是 32 位编译器的新手,正在使用新采用的目标创建例程来为嵌入式系统操作字符数组:使用 GCC 32 位编译器的 SiLabs Leopard Gecko 处理器。
问题:我们的嵌入式系统内存有限,我正在尝试了解编译器如何存储 char 数组,以便我们有效地使用可用的 RAM 和闪存。编译器报告 RAM 使用量以 4 字节增量递增,这符合默认的 32 位字大小(即 char X[1] 到 char X[4] 全部导致 RAM 分配 4 个字节,char[5] 导致分配8 个字节的报告)。
据我了解,编译器会将所有变量存储为 32 位值(long 等除外)
问题:上面的内存报告是否暗示编译器创建了必要的汇编代码来将 char[4] 打包成单个 32 位字并处理字节解析,如果我要写一行如 char Y = 字符数组[2] ?
不是配置。 Silab Gecko 是基于 ARM M-3 的 uC。此 uC 对对齐敏感,并且链接器以这种方式放置对象以使地址可被 4
整除以避免对齐问题。它在链接描述文件中定义。