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 |