单任务计算机是怎样工作的————(以一段汇编代码执行过程为例)

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值