VC6.0中的C语言反汇编代码
来源:互联网 发布:java map list set 编辑:程序博客网 时间:2024/04/30 12:46
C语言虽然是比较偏向底层的代码,但是后时候只通过表层的C语言执行顺序还不能完全理解C语言的执行过程,比如说i++和++i,可以通过反汇编代码来深入理解理解C语言,下面提供一个简单的main函数和add函数,可以了解到C语言汇编层面的内容。
下面的这个函数完成一个简单的相加功能:
#include <stdio.h>int add(int a, int b){return a + b;}int main(){int a, b, c;a = 1;b = 2;c = add(a, b);printf("%d\n", c);return 0;}首先按F9进行断点,然后按Alt+F8即可进入反汇编代码。
下面是main函数的反汇编代码:
8: int main()9: {0040D480 push ebp0040D481 mov ebp,esp0040D483 sub esp,4Ch0040D486 push ebx0040D487 push esi0040D488 push edi0040D489 lea edi,[ebp-4Ch]0040D48C mov ecx,13h0040D491 mov eax,0CCCCCCCCh0040D496 rep stos dword ptr [edi]10: int a, b, c;11:12: a = 1;0040D498 mov dword ptr [ebp-4],113: b = 2;0040D49F mov dword ptr [ebp-8],214:15: c = add(a, b);0040D4A6 mov eax,dword ptr [ebp-8]0040D4A9 push eax0040D4AA mov ecx,dword ptr [ebp-4]0040D4AD push ecx0040D4AE call @ILT+15(add) (00401014)0040D4B3 add esp,80040D4B6 mov dword ptr [ebp-0Ch],eax16:17: printf("%d\n", c);0040D4B9 mov edx,dword ptr [ebp-0Ch]0040D4BC push edx0040D4BD push offset string "%d\n" (0042201c)0040D4C2 call printf (0040d740)0040D4C7 add esp,818: return 0;0040D4CA xor eax,eax19: }0040D4CC pop edi0040D4CD pop esi0040D4CE pop ebx0040D4CF add esp,4Ch0040D4D2 cmp ebp,esp0040D4D4 call __chkesp (0040d700)0040D4D9 mov esp,ebp0040D4DB pop ebp0040D4DC ret
下面是add函数的反汇编代码:
3: int add(int a, int b)4: {004010A0 push ebp004010A1 mov ebp,esp004010A3 sub esp,40h004010A6 push ebx004010A7 push esi004010A8 push edi004010A9 lea edi,[ebp-40h]004010AC mov ecx,10h004010B1 mov eax,0CCCCCCCCh004010B6 rep stos dword ptr [edi]5: return a + b;004010B8 mov eax,dword ptr [ebp+8]004010BB add eax,dword ptr [ebp+0Ch]6: }004010BE pop edi004010BF pop esi004010C0 pop ebx004010C1 mov esp,ebp004010C3 pop ebp004010C4 ret
0 0
- VC6.0中的C语言反汇编代码
- VC6.0反汇编代码
- c语言反汇编代码
- C语言的反汇编代码
- C语言的反汇编代码
- vc6.0 c语言调用汇编
- C语言反汇编代码分析,理解计算机工作原理
- C语言反汇编代码(三大结构)
- c语言反汇编公式
- C语言的反汇编
- 反汇编 C 语言程序
- C语言程序反汇编
- VC6中C代码生成汇编代码
- VC6.0 C语言精华代码
- vc6.0 查看汇编代码
- VC6.0查看汇编代码
- 常见语言反汇编入口代码
- 常见语言反汇编入口代码
- 通过数组保存字符串和通过指针保存字符串的区别
- 【erlang 使用】eredis 介绍
- JavaScript设计模式--策略模式
- Mac窗口管理神器
- 条款02:尽量以const, enum, inline 替换#define
- VC6.0中的C语言反汇编代码
- mysql jdbc驱动源码分析(驱动加载)
- 输入一个数计算其二进制中连续1的个数
- 如何发布自己写的网站,使自己的机器成为服务器
- Android之Fragment学习(三)
- 黑马程序员——Java之IO(下)
- 数据结构实验之排序一:一趟快排
- char*,string和CString之间的转换
- 初学C 占位符类型