【问题标题】:.4byte assembly directive usage.4byte 汇编指令用法
【发布时间】:2020-05-03 03:42:56
【问题描述】:

当我编译一个 C 文件时,我在临时 S 文件中得到以下行:

.4byte  .Letext0-.Ltext0 

这是什么意思?我知道“.4byte”指令将在内存中保留 4 个连续字节,但“.Letext0-.Ltext0”是什么意思?我很困惑,无法在网上找到帮助。非常感谢!

【问题讨论】:

  • 减去两个标签得到一个数字,它们之间的距离(以字节为单位)。

标签: assembly gnu-assembler powerpc


【解决方案1】:

减去两个标签得到一个数字,它们之间的距离(以字节为单位)。

etext 是链接器用来指示文本部分结束的符号 text 表示文本部分的开始

文本段往往是实际的二进制程序代码本身。虽然它也可能包含静态数据。

此指令将文本部分(或程序代码)的大小存储在一个 32 位整数中。

【讨论】:

  • 对于这些标签,文本段正式包含哪些部分?我猜不是.rodata 在现代版本的 Binutils 中将它链接到它自己的段(所以它可以是只读的 without exec)。但除了.text 部分本身,也许还有.plt.init?根据readelf -a /bin/ls,有一个段包含.init .plt .text .fini 部分。我想我有点惊讶文本 segment 的符号而不仅仅是文本 section,并且想知道您是否指的是 section.
  • 是的,我确实是指“部分”而不是“段” - 答案已编辑。
猜你喜欢
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2012-02-27
  • 2011-11-22
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多