gpt4 book ai didi

c - 如何将变量放置在内存中给定的绝对地址(使用 GCC)

转载 作者:太空狗 更新时间:2023-10-29 16:24:20 38 4
gpt4 key购买 nike

RealView ARM C 编译器 supports使用变量属性 at(address) 将变量放置在给定的内存地址:

int var __attribute__((at(0x40001000)));
var = 4; // changes the memory located at 0x40001000

GCC有没有类似的变量属性?

最佳答案

我不知道,但您可以像这样轻松创建解决方法:

int *var = (int*)0x40001000;
*var = 4;

这不是完全相同的东西,但在大多数情况下是完美的替代品。它适用于任何编译器,而不仅仅是 GCC。

如果您使用 GCC,我假设您也使用 GNU ld (当然,虽然不确定)并且 ld 支持放置变量 wherever you want them .

我认为让链接器完成这项工作很常见。

受@rib 回答的启发,我将补充一点,如果绝对地址用于某个控制寄存器,我会在指针定义中添加 volatile。如果它只是 RAM,那没关系。

关于c - 如何将变量放置在内存中给定的绝对地址(使用 GCC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4067811/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com