C source code:
#include <stdio.h>
void sub(int x)
{
}
void xiao()
{
static int x = 10;
sub(x);
}
void yu()
{
static int x = 20;
sub(x);
}
int main(int argc, const char *argv[]) {
return 0;
}
Run 'gcc' to compile it. Run 'nm -n' to give the following result:
...
0804a010 d x.1708
0804a014 d x.1704
...
Run 'objdump -S':
...
080483b9 <xiao>:
80483b9: 55 push %ebp
80483ba: 89 e5 mov %esp,%ebp
80483bc: 83 ec 04 sub $0x4,%esp
80483bf: a1 14 a0 04 08 mov 0x804a014,%eax
80483c4: 89 04 24 mov %eax,(%esp)
80483c7: e8 e8 ff ff ff call 80483b4 <sub>
80483cc: c9 leave
80483cd: c3 ret
080483ce <yu>:
80483ce: 55 push %ebp
80483cf: 89 e5 mov %esp,%ebp
80483d1: 83 ec 04 sub $0x4,%esp
80483d4: a1 10 a0 04 08 mov 0x804a010,%eax
80483d9: 89 04 24 mov %eax,(%esp)
80483dc: e8 d3 ff ff ff call 80483b4 <sub>
80483e1: c9 leave
80483e2: c3 ret
...
We can see that xiao uses 0x804a014 and yu uses 0x804a010. Now let us run 'objdump -s':
...
Contents of section .data:
804a008 00000000 00000000 14000000 0a000000 ................
...
We can that xiao's x has value 10 and yu's x has value 20.
分享到:
相关推荐
Wraps the existing \c _mesa_symbol_table data structure to enforce some type safe and some symbol table invariants.
《符号表(Symbol Table)在UNIX程序中的实现》 在计算机科学中,符号表是一种数据结构,用于存储程序中各种符号的信息,如变量名、函数名等。它扮演着至关重要的角色,因为它是编译器、解释器和链接器的核心组成...
在IT行业中,尤其是在系统编程和调试领域,理解符号表(Symbol Table)是非常关键的一个环节。符号表是一个数据结构,用于存储程序中各个符号(如变量、函数、标签等)的相关信息,例如它们的地址、类型、大小等。当...
这通常涉及到调用C语言中的MySQL API,例如`mysql_query()`或`PDO::query()`。 `escapeString()`方法是防止SQL注入的关键。通过调用`mysqli_real_escape_string()`或`PDO::quote()`,我们可以确保用户输入的数据在...
在IT行业中,符号表(Symbol Table)是编程和编译器设计中的一个重要概念,它用于存储程序中定义和引用的各种符号信息,如变量、函数、常量等的名称及其对应的地址或属性。在这个名为"ir_import_prototypes.rar_...
在提供的压缩包文件中,我们可以看到一系列与编译器相关的核心模块代码,如LEXER、PARSER、SYMBOL TABLE管理等关键部分。 1. **词法分析**: - 文件`GEXPR68.C`和`GEXPR386.C`,可能对应于不同平台(如Motorola 68...
3. **符号表(Symbol Table)**:在词法分析过程中,会创建一个符号表来存储所有标识符的信息,如变量名、函数名等,包括它们的类型、作用域等。符号表对于程序的编译和链接过程至关重要。 4. **常数表(Constant ...
【作品名称】:基于 Python 实现的C语言编译器 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、... │ └─ symbol_table.py └─WordAnalysis └─ words_analysis.py
5. 符号表管理(Symbol Table Management):跟踪和存储程序中的标识符信息。 6. 错误处理(Error Handling):报告和处理编译期间遇到的问题。 通过对C语言编译器源代码的研究,你可以深入了解编译器如何解析和...
} SymbolTable; ``` 接下来,我们需要实现以下功能: - **插入(Insert)**:将新的标识符及其信息添加到符号表中,确保不与已存在的标识符冲突。 - **查找(Search)**:根据标识符查找相应的条目,返回相关信息...
目标文件(Object file) 3 序言 3 文件格式 3 数据表示 4 ELF Header 5 ELF 鉴别(Identification) 8 节 11 特殊节 18 字符串表String Table 22 符号表Symbol Table 23 符号值Symbol Values 27 重定位Relocation 27 ...
目标文件(Object file) 3 序言 3 文件格式 3 数据表示 4 ELF Header 5 ELF 鉴别(Identification) 8 节 11 特殊节 18 字符串表String Table 22 符号表Symbol Table 23 符号值Symbol Values 27 重定位Relocation 27 ...
这一阶段会建立符号表(symbol table),记录变量和函数的定义及类型信息。 中间代码生成阶段是将AST转换为中间代码表示,这种代码是独立于机器代码的,通常更接近于高级语言的结构,便于进一步的优化处理。 代码...
SYMBOL TABLE OF MODULE: chuankou (?C_STARTUP) VALUE TYPE NAME ---------------------------------- ------- MODULE ?C_STARTUP C:0003H SEGMENT ?C_C51STARTUP I:000BH SEGMENT ?STACK C:0000H PUBLIC ?...
C语言编译器设计 该项目为编译原理团队课程设计作业 介绍 ... │ └─ symbol_table.py └─WordAnalysis └─ words_analysis.py 文法:LL(1)-->具体文法 TODO 前端部分 词法分析 语法分
2.5 Symbol Table 16 2.5.1 st_info说明 17 2.5.2 符号类型 17 2.5.3 特殊的Section索引 18 2.5.4 Symbol Values 18 2.6 Relocation 19 2.6.1 重定位表项 19 2.6.2 重定位类型 20 3 程序装载和动态链接 22 3.1 简介 ...
7. **SYMTAB.C**:符号表(Symbol Table)管理程序中的所有标识符及其相关信息,如类型、作用域、存储类别等,是编译器保持符号信息一致性的核心数据结构。 8. **CODE.C**:这可能是关于代码生成的进一步实现,与...
1. **符号表(Symbol Table)**: - `enum symbol`定义了不同的符号类型,包括标识符(ident)、数字(number)以及运算符等。 - 结构体`struct tablestruct`用于存储符号表信息,包括名字(name)、类型(kind)...
符号表接口(SymbolTable Interfaces)和符号表编程入门(SymbolTable Programming Primer)是高级的使用指南和开发向导。 Open64 WHIRL文档中提到的WHIRL节点布局(WHIRLNodeLayout)描述了中间表示的内部结构。它...
- `symbol_table.h/cpp`: 实现符号表的结构和操作。 - `first_follow.h/cpp`: 计算FIRST和FOLLOW集合的函数。 - `ll1_table.h/cpp`: 生成和操作LL1分析表的函数。 - `parser.h/cpp`: 实现解析器的主要代码,包含解析...