_end , _etext 或 _edata 标识

用途

定义程序后的第一个地址,初始化的数据和所有数据。

语法

extern _end;
extern _etext;
extern _edata;

描述

外部名称 结束 (_S)文本 (_e) _edata 是由所有程序的装入程序定义的。 它们不是子例程,而是与以下地址关联的标识:

表 1. 地址
描述
_etext 程序文本后面的第一个地址。
_edata 初始化数据区域后的第一个地址。
_end 未初始化的数据区域后面的第一个地址。 名称 结束 (不含下划线) 定义的地址与 结束 (_S) (不含下划线) 定义的地址相同。

该程序的中断值是数据之外的第一个位置。 当程序开始运行时,此位置与 结束一致。 但是,许多因素可以更改中断值,包括:

  • brksbrk 子例程
  • malloc 子例程
  • 标准 I/O 子例程
  • 带有 cc 命令的 -p 标志

因此,请使用 布尔克sbrk (0) 子例程 (而不是 结束 地址) 来确定程序的中断值。