黄胤凯 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
在实验楼中运行该段代码,个别数字进行了调整,实验运行结果如下:
二、程序分析
根据视频中的讲解,将源代码与汇编后的代码比对来看:
由图中可以看出源代码中每一个函数都有与之对应的一段汇编代码
由于在之前学习过相应的汇编指令,所以从几个陌生指令开始详解。leave指令与enter指令相对应,leave指令与enter指令的实质是:
可以将这两个指令换为相应的压栈和弹栈指令。
call f:pushl eip
movl f eip
开始整段代码进行分析:
寄存器:
汇编代码中,寄存器eip从main函数开始依次指向f函数和g函数。
寄存器ebp和esp分别指向堆栈的栈顶和栈底。
函数的返回值默认使用eax寄存器存储返回给上一级函数。
三、总结
从实质上来看,计算机的工作原理略显笨拙,通过一条条指令解决一系列的问题。冯诺依曼体系结构为CPU和总线解决指令而服务,这也就是冯诺依曼结构的重要意义。
但由于硬件基础越来越好,使计算机处理指令的速度越来越快,在表面上看来计算机的处理能力还是相对强大的。
总之,计算机利用硬件与软件的相互协作,高速而有效地处理大量的数据和指令。
原文:http://www.cnblogs.com/20132109HKK/p/5225027.html