高级C代码的汇编分析--截取struct部分
1:
2: typedef struct {
3: int a;
4: int b;
5: int c;
6: }mystruct;
7:
8: int func(int a,int b)
9: {
0040B800 push ebp
0040B801 mov ebp,esp
0040B803 sub esp,1D8h
0040B809 push ebx
0040B80A push esi
0040B80B push edi
0040B80C lea edi,[ebp-1D8h]
0040B812 mov ecx,76h
0040B817 mov eax,0CCCCCCCCh
0040B81C rep stos dword ptr [edi]
10:
11: unsigned char *buf[100];
12: mystruct *strs = (mystruct *)buf;
0040B81E lea eax,[ebp-190h]
0040B824 mov dword ptr [ebp-194h],eax
13: int i;
14: for(i=0; i<5; i++)
0040B82A mov dword ptr [ebp-198h],0
0040B834 jmp func+45h (0040b845)
0040B836 mov ecx,dword ptr [ebp-198h]
0040B83C add ecx,1
0040B83F mov dword ptr [ebp-198h],ecx
0040B845 cmp dword ptr [ebp-198h],5
0040B84C jge func+94h (0040b894)
15: {
16: strs[i].a=0;
0040B84E mov edx,dword ptr [ebp-198h]
0040B854 imul edx,edx,0Ch
0040B857 mov eax,dword ptr [ebp-194h]
0040B85D mov dword ptr [eax+edx],0
17: strs[i].b=1;
0040B864 mov ecx,dword ptr [ebp-198h]
0040B86A imul ecx,ecx,0Ch
0040B86D mov edx,dword ptr [ebp-194h]
0040B873 mov dword ptr [edx+ecx+4],1
18: strs[i].c=2;
0040B87B mov eax,dword ptr [ebp-198h]
0040B881 imul eax,eax,0Ch
0040B884 mov ecx,dword ptr [ebp-194h]
0040B88A mov dword ptr [ecx+eax+8],2
19: }
0040B892 jmp func+36h (0040b836)
20:
21: return 0;
0040B894 xor eax,eax
22: }
0040B896 pop edi
0040B897 pop esi
0040B898 pop ebx
0040B899 mov esp,ebp
0040B89B pop ebp
0040B89C ret
相关redis源代码:
typedef char *sds;
struct sdshdr {
unsigned int len;
unsigned int free;
char buf[];
};
sds sdsnewlen(const void *init, size_t initlen) {
struct sdshdr *sh;
if (init) {
sh = zmalloc(sizeof(struct sdshdr)+initlen+1);
} else {
sh = zcalloc(sizeof(struct sdshdr)+initlen+1);
}
if (sh == NULL) return NULL;
sh->len = initlen;
sh->free = 0;
if (initlen && init)
memcpy(sh->buf, init, initlen);
sh->buf[initlen] = '\0';
return (char*)sh->buf;
}
from http://www.cnblogs.com/lfsblack/p/3763993.html
相关推荐
var StructType = require('ref-struct') // define the time types var time_t = ref.types.long var suseconds_t = ref.types.long // define the "timeval" struct type var timeval = StructType({ tv_sec: ...
MapStruct通过注解处理器在编译时自动生成映射代码,既保证了性能,又提供了类型安全的解决方案。 MapStruct 的工作原理是基于Java的JSR 269注释处理器,它通过getter和setter方法进行字段拷贝,避免了反射带来的...
赠送源代码:mapstruct-1.1.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.1.0.Final.pom; 包含翻译后的API文档:mapstruct-1.1.0.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.map...
GPU-grid-block-thread-OpenMP-struct,GPU-grid-block-thread-OpenMP-struct
用于协议缓冲区的Mapstruct SPI实现 这种命名策略有助于在您的域类和protobuf类之间生成有效的映射代码。 无论和类支载。 注意:取决于mapstruct 1.4.0.CR1ProtobufAccessor命名策略扩展...
通过分析这个游戏的源代码,我们可以深入理解C语言在游戏开发中的应用,以及游戏的基本逻辑和算法。 首先,C语言是游戏开发中的一个重要工具,它的性能高效、可移植性强,适合编写底层程序。坦克游戏作为一款简单的...
1. **简介**:这部分通常会介绍MapStruct的基本概念和设计原则,包括约定优于配置的哲学,以及如何利用它来简化Java Bean之间的数据转换。MapStruct通过注解驱动的方式工作,开发者只需要定义映射接口,而具体的实现...
《C语言实现的成绩管理系统源代码解析》 C语言是一种强大的编程工具,尤其在系统级编程和小型应用程序开发中,它的简洁性和高效性得到了广泛应用。本文将解析一款基于C语言编写的简单成绩管理系统源代码,旨在帮助...
4. **模块化**:库的设计遵循模块化原则,开发者可以根据需求选择使用部分功能,降低了学习成本和引入的冗余代码。 5. **易扩展**:Brisky-struct 支持自定义插件和中间件,使得开发者可以轻松扩展功能,适应不同的...
而`vars2struct.m`则是该函数的源代码文件,通过阅读和理解源码,你可以深入了解其内部实现机制,甚至对其进行定制和扩展,以满足特定需求。 总之,`vars2struct`是一个在MATLAB中处理多变量数据时非常有用的工具,...
MEX函数是MATLAB与C/C++代码交互的一种方式,可以显著提高执行速度,因此,`xml2struct`通过MEX编译的C/C++代码来解析XML文件,能更高效地将XML数据转换为MATLAB友好的结构。 1. **MEX函数**:MEX(MATLAB ...
在C语言中,`struct` 和 `union` 是两种非常重要的数据类型,它们允许我们创建自定义的数据结构来存储和操作复杂的数据。本章节将详细探讨这两种数据类型的使用及其特点。 首先,`struct` 结构体是C语言中用于组合...
通过这个智能交通灯的C语言源代码,初学者可以学习到C语言的基本语法,图形界面编程,以及如何用结构体和链表来组织数据。同时,这个程序也涉及到了简单的流程控制和时间管理,为C语言的实践应用提供了很好的实例。
当lpeg-0.12.2与struct-0.2结合时,开发者可以利用LPEG的强大解析能力,配合Struct的数据结构,实现更为复杂的文本分析和处理任务。例如,开发者可以使用LPEG解析XML或JSON文档,然后通过Struct定义的数据结构来存储...
赠送源代码:mapstruct-jdk8-1.2.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-jdk8-1.2.0.Final.pom; 包含翻译后的API文档:mapstruct-jdk8-1.2.0.Final-javadoc-API文档-中文(简体)-英语-对照版.zip...
此外,文件操作也是C语言中的重要部分,特别是在涉及数据持久化的情况下。在期刊管理系统中,我们需要将期刊数据保存到磁盘上,以便于后续的读取和更新。这涉及到文件的打开、写入、读取和关闭等操作,以及格式化...
这个“C语言开发----c语言电子时钟程序”压缩包很可能是包含了一个简单的C语言源代码,用于实现一个实时显示当前时间的功能。下面将详细介绍这个过程中的关键知识点。 首先,C语言不直接支持获取系统时间,我们需要...
【火车订票系统源代码分析】 本篇文档提供的是一份基于C语言编写的火车订票系统的源代码。这个系统能够实现基本的火车信息管理、查询、预订和信息更新等功能。以下将对源代码的主要结构和功能进行详细解析。 1. **...
- **开发目的**:通过此项目,学生能够掌握C语言的基本语法及高级特性,并学会如何运用C语言解决实际问题。 #### 二、需求分析 - **业务场景**:一家公司有四位销售员(编号1至4),负责五种产品的销售(编号1至5...