gpt4 book ai didi

c - 什么是绝对符号以及如何在 C 中定义它?

转载 作者:行者123 更新时间:2023-12-02 01:32:39 26 4
gpt4 key购买 nike

nm 的手册页中.它说

“A” The symbol's value is absolute, and will not be changed by further linking.



不过,我不知道那是什么意思。我如何定义一个变量或其他东西以使其值绝对 在 C ?

如果我在 test.c 中声明一个变量在其文件范围内
int a;

然后在 nm 的输出中, a 的条目将在我的机器上如下

0000000000000004 C a

所以我想知道我能做些什么来制作 nm为变量输出“A”。我不知道“绝对”是什么意思。

最佳答案

当 C 编译器编译您的程序时,除了程序的二进制代码之外,它还生成一个符号列表。您将看到的最常见类型是 U s(用于“未定义”),D s 和 S s(用于全局数据)和 T s(用于“文本”段,这是可执行代码所在的位置)。
A s 或绝对(不可移动)符号用于支持嵌入式开发,其中需要将事物放置在内存中的绝对地址处。通常只有在为嵌入式系统进行交叉编译时才会产生这样的符号,使用 C 语言扩展可以指定绝对地址。典型的语法如下所示:

unsigned char buf[128]@0x2000;

不过,这不是标准的 C,而是嵌入式系统的扩展。像这样的代码会产生一个绝对符号 buf设置地址 0x2000 , 不能被链接器移动。

关于c - 什么是绝对符号以及如何在 C 中定义它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324076/

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