一个程序执行步骤

一个典型的hello程序,先转换为ascii码的文本表示存在内存中

经过预处理,编译,汇编,链接(会进行系统调用),加载后生成可执行文件



命令行状态下:

read:shell命令行处理软件处理输入(例如接受字符),将送到寄存器中,寄存器再送到主存,把命令放到一个缓冲器中。

按下enter后shell把控制权交给操作系统,操作系统把命令取过来,操作系统将可执行文件加载,从磁盘读到内存

操作系统把指令的第一条指令送给pc,控制权交给程序

最后把结果送到寄存器,再送到屏幕




CPU指令执行过程:

1:取指令(指令寄存器或指令存储器取里)

这时候可能发生异常,例如缺页,越界(数据区取指令)

2:同时pc+1送pc(ALU里面做)

不会有异常


3:指令译码

可能发生异常,非法指令


4:进行主存地址运算

不会异常


5:取操作数

跟取指令一样的异常


6:进行算术/逻辑运算

可能异常,如算术溢出


存结果

可能异常,如TLB缺失


以上每一步都要检测异常以及中断请求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。