汇编的角度,一步一步剖析一个C语言的简单程序,包括堆栈变化(图解堆栈)

为了深刻理解汇编语言与C语言的关系,锻炼到看C如看汇编,看汇编如看C,开始学习的长路。(看不清楚,可以放大浏览器)

今天借助视频教学的课后作业,手工重新绘制了整个堆栈图,如下:工具(VC6.0)我看了VS2019的反汇编基本一致

1.源代码

 1 #include <stdio.h>
 2 
 3 
 4 int plus1(int x, int y)
 5 {
 6     return x + y;
 7 
 8 }
 9 int plus2(int x, int y, int z)
10 {
11     int i, j;
12 
13     i = plus1(x, y);
14     j = plus1(i, z);
15     return j;
16 
17 }
18 
19 int plus3(int a, int b, int c, int d, int e)
20 {
21 
22     int i, j, k;
23     i = plus1(a, b);
24     j = plus2(c, d, e);
25     k = plus1(i, j);
26     return k;
27 
28 
29 }
30 
31 int main(int argc, char *argv[])
32 {
33     int i;
34 
35     i = plus3(1, 2, 3, 4, 5);
36     printf("%d
", i);
37     return 0;
38 }
View Code

2.堆栈图以及对应流程

 

 

 

 

 很多步骤是重复的因此没有在浪费时间写博客,自己练习了一下

原文地址:https://www.cnblogs.com/heyhx/p/14191309.html