反汇编后几个段的含义
预定义段
一个WindowsNT的应用程序典型地拥有9个预定义段,它们是.text、.bss、.rdata、.data、.rsrc、.edata、.idata、.pdata和.debug。一些应用程序不需要所有的这些段,同样还有一些应用程序为了自己特殊的需要而定义了更多的段。这种做法与MS-DOS和Windows3.1中的代码段和数据段相似。事实上,应用程序定义一个独特的段的方法是使用标准编译器来指示对代码段和数据段的命名,或者使用名称段编译器选项-NT——就和Windows3.1中应用程序定义独特的代码段和数据段一样。
以下是一个关于Windows NT PE文件之中一些有趣的公共段的讨论。
可执行代码段,.text
Windows 3.1和Windows NT之间的一个区别就是WindowsNT默认的做法是将所有的代码段(正如它们在Windows3.1中所提到的那样)组成了一个单独的段,名为“.text”。既然WindowsNT使用了基于页面的虚拟内存管理系统,那么将分开的代码放入不同的段之中的做法就不太明智了。因此,拥有一个大的代码段对于操作系统和应用程序开发者来说,都是十分方便的。
.text段也包含了早先提到过的入口点。IAT亦存在于.text段之中的模块入口点之前。(IAT在.text段之中的存在非常有意义,因为这个表事实上是一系列的跳转指令,并且它们的跳转目标位置是已固定的地址。)当WindowsNT的可执行映像装载入进程的地址空间时,IAT就和每一个导入函数的物理地址一同确定了。要在.text段之中查找IAT,装载器只用将模块的入口点定位,而IAT恰恰出现于入口点之前。既然每个入口拥有相同的尺寸,那么向后退查找这个表的起始位置就很容易了。
数据段,.bss、.rdata、.data
.bss段表示应用程序的未初始化数据,包括所有函数或源模块中声明为static的变量。
.rdata段表示只读的数据,比如字符串文字量、常量和调试目录信息。
所有其它变量(除了出现在栈上的自动变量)存储在.data段之中。基本上,这些是应用程序或模块的全局变量。
资源段,.rsrc
.rsrc段包含了模块的资源信息。它起始于一个资源目录结构,这个结构就像其它大多数结构一样,但是它的数据被更进一步地组织在了一棵资源树之中。以下的IMAGE_RESOURCE_DIRECTORY结构形成了这棵树的根和各个结点。
VC编译的汇编代码
1、各段的含义:
_TEXT:代码段
_DATA:已初始化数据段
CONST:常数段
_BSS:未初始化数据段
STACK:堆栈
TLS:线程局部存储有关的数据
2、变量声明的编译,给变量分配内存、
如: int i可编译成:
_i$=8,表示将变量I安排在EBP+8处
分享到:
相关推荐
"汇编几个小程序 很有趣"这个主题表明我们将探讨一些简单的汇编语言程序,这些程序对初学者来说既易于理解,又具有趣味性。 文件"wordtest.ASM"是一个汇编源代码文件,其中包含了用汇编语言编写的指令。汇编语言的...
本篇将围绕“汇编编译器及几个小程序”这一主题,深入探讨汇编语言、编译器的使用以及初学者如何通过简单的汇编程序入门。 标题中的“汇编编译器”可能指的是MASM(Microsoft Macro Assembler),这是一个经典的DOS...
标题"汇编里面几个程序初学者一定要看"所暗示的知识点可能包括以下几个方面: 1. **基本概念**:首先,学习汇编需要了解CPU架构,例如x86或ARM,以及它们的寄存器系统。寄存器是CPU内部的高速存储单元,理解它们的...
标题提到的是"汇编语言写的几个游戏",这意味着我们将会探讨如何使用汇编语言来创建游戏。 汇编语言的游戏开发涉及到多个关键知识点: 1. **指令集架构(ISA)理解**:不同的处理器有不同的指令集,比如x86、ARM等...
汇编API的使用通常包括以下几个步骤: 1. **调用约定**:确定如何传递参数给函数,以及返回值如何存储。不同的操作系统和硬件平台可能有不同的调用约定。 2. **函数原型**:定义函数的输入参数和返回值类型,尽管在...
这个过程通常涉及到以下几个步骤: 1. **汇编阶段**:在这个阶段,汇编器(Assembler)读取汇编语言源代码,将其解析并转换为机器语言的中间表示,也就是汇编指令的二进制形式。这个过程中,汇编器会处理符号引用、...
"汇编语言-最常用的几个寄存器" 在汇编语言中,寄存器是CPU中的一组小的内存区域,用来存储数据和指令。它们是CPU直接访问和处理数据的区域。常用的寄存器有: 1. AX寄存器:是累加寄存器,用于存储算术和逻辑操作...
汇编语言的每一个指令都代表一个特定的机器代码,因此,用汇编语言编写的游戏能够非常高效地利用计算机资源,尤其在处理性能要求极高的游戏逻辑时。 汇编语言写的游戏具有以下特点: 1. **性能优化**:由于汇编语言...
在"汇编语言全接触"这份帮助手册中,我们可能会深入探讨以下几个关键知识点: 1. **基本概念**:首先,我们需要了解汇编语言的基本构成,如指令集、寄存器、内存地址、操作码和操作数等。这些概念是编写汇编程序的...
- 段定义:每个汇编程序都由一个或多个段组成,每个段有其特定的用途,如代码段(.CODE)、数据段(.DATA)和堆栈段(.STACK)。 - 寄存器使用:汇编语言充分利用CPU的寄存器来提高效率,如AX、BX、CX、DX等通用...
这些例子可能涵盖了以下几个关键知识点: 1. **基本操作**:包括数据加载、存储、算术运算和逻辑运算。例如,加载寄存器、存储到内存、加法、减法、乘法和除法等。 2. **控制流**:汇编语言中的跳转指令,如`JMP`...
在本次实验和考核中,主要涵盖了以下几个关键知识点: 1. **数据输入与输出**: - 题目1要求输入4位16进制数据并转换为10进制输出。这涉及到对字符的处理,以及数值转换。程序通过`mov`指令设置段寄存器,`lea`...
汇编程序实例通常包含以下几个部分: 1. 数据段(Data Segment):在这里声明并初始化程序所需的数据,比如变量或常量。 2. 代码段(Code Segment):包含实际的指令序列,定义了程序的执行流程。 3. 堆栈段(Stack...
通过上述分析可以看出,这段汇编程序实现了从键盘读取一个数字,然后根据数字是奇数还是偶数来输出不同的信息。虽然代码较为简洁,但它包含了汇编语言中的一些基本元素和控制结构,例如数据段的定义、中断调用、条件...
本实验报告的知识点可以总结为以下几个方面: 1. 汇编语言基础知识:汇编语言是一种低级语言,使用符号来表示机器语言的指令。汇编语言的优点是可以直接访问硬件资源,缺点是编程难度高,需要掌握机器语言的指令集...
1.1 定义与特点:汇编语言是一种符号化的机器语言,每一条指令对应一个或几个机器码,特点是直接性强,效率高,但编写复杂,可读性相对较弱。 1.2 适用场景:汇编语言常用于系统软件开发、嵌入式系统、设备驱动编程...
在本次“汇编语言实验报告”中,我们将探讨以下几个核心知识点: 1. **汇编语言基本概念**:汇编语言由指令集组成,每个指令对应一个特定的机器码,用于控制计算机的硬件操作。例如,`MOV`指令用于数据传输,`ADD`...
汇编程序编译器的工作原理可以分为几个关键步骤。首先,它读取源代码文件,解析其中的指令和符号。然后,编译器会进行汇编过程,将汇编指令转换成机器码。这个阶段可能涉及符号解析、地址计算和错误检查。一旦汇编...
在学习和使用51汇编库时,开发者需要注意以下几点: 1. 了解51单片机的寄存器结构和工作模式,这是理解汇编库函数的关键。 2. 掌握基本的汇编语言语法,包括指令、操作数和指令编码。 3. 学习如何组织和调用库函数,...
有两个小程序是用来编译的,另外有几个自己编写的小程序,都可以用的。十进制显示AX的值、循环算阶乘(最大可算39!)、以及排序