linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

一、实验

使用gcc –S –o main.s main.c -m32

命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同

int g(int x)

{

return x + 3;

}

int f(int x)

{

return g(x);

}

int main(void)

{

return f(8) + 1;

}

源代码:

linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

汇编代码:

linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

去点.开头的代码后

linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

堆栈变化:

linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

我对“计算机是如何工作的”理解

通过以上一个小例子,清楚地展示了计算机是如何在堆栈中进行数据流的变化的。我的理解是,当开始运行一段程序,都是在往堆栈压入数据,这个例子中main函数代码运行过程就是这样,这一段代码中还嵌套了g、f函数,当这两个函数运行完成后,执行ret指令,堆栈中的值就开始出栈,当main函数也执行到ret,整个堆栈还原了。所以计算机工作的过程,就是堆栈中数据先增后减直到堆栈还原的过程。小程序是这样的过程,大程序也如此。

李海空原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

上一篇:erlang+thrift配合开发


下一篇:【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制