为了深刻理解汇编语言与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 }
2.堆栈图以及对应流程
很多步骤是重复的因此没有在浪费时间写博客,自己练习了一下