【发布时间】:2022-03-30 18:39:55
【问题描述】:
链接器文件中内存命令的长度部分用 K、M 符号表示千字节、兆字节等。乘数是 1000 还是 1024?
【问题讨论】:
标签: linker gnu ld linker-scripts
链接器文件中内存命令的长度部分用 K、M 符号表示千字节、兆字节等。乘数是 1000 还是 1024?
【问题讨论】:
标签: linker gnu ld linker-scripts
我知道这是几个月后的事了,但我自己也想知道 K 和 M 部分。
LD 手册规定表达式“必须仅为数字并计算为常数”。然后它愉快地继续使用 256K 和 4M 的示例,这有点令人不安!
相关的源代码文件(在 binutils/ld 中)似乎是 ldlex.l 和 ldgram.y。在词法分析器中,表达式可以以 [M|K|m|k] 结尾。
对于 M 或 m,该值乘以 1024 * 1024。
对于 K 或 k,该值乘以 1024。
编辑:我已经单独阅读了 LD 手册的部分内容,这可能会产生误导!当我阅读更多链接器手册时,我可以看到它确实指定了数字常量的含义,其中确实包括 K 和 M 之类的后缀: https://sourceware.org/binutils/docs/ld/Constants.html#Constants
【讨论】: