7.9.1.21.GEL 命名空间

当 GEL 解析表达式中的符号名称时,GEL 首先确定符号是否是在加载的符号文件中定义的局部变量。如果不是,GEL 会检查它是否是全局变量。然后,GEL 将该名称与目标寄存器名称进行匹配。最后,GEL 查找是否定义了任何具有相同名称的 GEL 变量。

如果存在一个与代码中的变量具有相同名称的 GEL 变量,则只会显示代码中的变量。无法更改此查找顺序。

引入 GEL 命名空间,以允许用户指定 GEL 应从何处解析符号。

句法

GEL 命名空间类似于常规 C++ 命名空间,但其命名空间名称是单引号字符串。

GEL 命名空间是 GEL_namespace 或 REG_namespace 或 SYM_namespace。

GEL_namespace 指明 GEL 应在 GEL 全局变量列表中查找符号。它用“GEL”或“Gel”或“gel”表示。它们具有相同的含义,并为方便用户使用而定义。

REG_namespace 指明 GEL 应在目标寄存器名称列表中查找符号。它用“REG”或“Reg”或“reg”表示。它们具有相同的含义,并为方便用户使用而定义。

SYM_namespace 的语法是 ‘ < SYM > [ :: [ < symbol file name > ] [ :: < source file name >] ] ‘,其中“SYM”或“Sym”或“sym”均可。

以下是一些示例:

表达式 含义
按常规顺序查找 v
‘GEL’::v 查找 GEL 变量 v
‘Gel’::v 同上
‘gel’::v 同上
gel::v 如果不使用单引号,GEL 将被解释为 C++ 类名称或命名空间
‘REG’::v 查找寄存器 v
‘Reg’::v 同上
‘reg’::v 同上
‘SYM’::v 从加载的符号文件中查找符号 v
‘Sym’::v 同上
‘sym’::v 同上
‘a.c’::v 从所有已加载的符号文件中查找在源文件 a.c 中定义的文件静态变量 v
‘sym::::a.c’::v 同上
‘sym::a.out’::v 查找与名称 a.out 匹配的符号文件中定义的变量 v
‘sym::a.out::a.c’::v 从与名称 a.out 匹配的符号文件中查找源文件 a.c 中定义的文件静态变量 v
‘sym::arch/a.out::arch/a.c’::v 从与名称 arch/a.out 匹配的符号文件中查找在源文件 arch/a.c 中定义的文件静态变量 v