1.冯诺依曼体系结构
冯诺依曼体系结构的计算机又叫存储程序计算机,是一种将程序指令存储器和数据合并在一起的存储器结构。计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成。如下图:
根据冯·诺依曼体系结构构成的计算机具有如下功能:把需要的程序和数据送至计算机中。具有长期记忆程序、数据、中间结果及最终运算结果的能力。能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。能够按照要求将处理结果输出给用户。
2.一段汇编代码的执行过程
1 AT&T汇编指令简介
以32位的X86为例:b w l q分别代表8位 16位 32位和64位
movl %eax,%edx edx=eax; register mode
movl $0x123,%edx edx=0x123; immediate
movl 0x123,%edx edx=*(int32_t*)0x123;direct
movl (%ebx),%edx edx=*(int32_t*)ebx;indirect
movl 4(%ebd),%edx edx=*(int32_t*)(ebx+4);
displaced
pushl %eax 等价于 subl $4,%esp
movl %eax,(%esp)
popl %eax 等价于 movl (%esp),%eax
addl $4,%esp
call 0x12345 等价于 push %eip(*)
movl $0x12345,%eip(*) (*)表示不实际存在于cpu中的操作
ret 等介于 popl %eip(*)
enter 等价于 pushl %ebp
movl %esp,%ebp
leave 等价于 movl %ebp,%esp
popl %ebp
更多指令请参考https://www.ibm.com/developerworks/cn/linux/l-assembly/#N10054
2 main.s的执行过程分析
main.c
main.s
执行过程分析:
返回结果存在eax中为11
3.总结
通过一段简单汇编代码的执行分析对计算机执行程序的过程有了比较深刻的认识。计算机其实只是执行一些算数 逻辑运算等,需要程序和硬件的结合才能完成工作任务。
史正乐 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000