一个典型的hello程序,先转换为ascii码的文本表示存在内存中
经过预处理,编译,汇编,链接(会进行系统调用),加载后生成可执行文件
命令行状态下:
read:shell命令行处理软件处理输入(例如接受字符),将送到寄存器中,寄存器再送到主存,把命令放到一个缓冲器中。
按下enter后shell把控制权交给操作系统,操作系统把命令取过来,操作系统将可执行文件加载,从磁盘读到内存
操作系统把指令的第一条指令送给pc,控制权交给程序
最后把结果送到寄存器,再送到屏幕
CPU指令执行过程:
1:取指令(指令寄存器或指令存储器取里)
这时候可能发生异常,例如缺页,越界(数据区取指令)
2:同时pc+1送pc(ALU里面做)
不会有异常
3:指令译码
可能发生异常,非法指令
4:进行主存地址运算
不会异常
5:取操作数
跟取指令一样的异常
6:进行算术/逻辑运算
可能异常,如算术溢出
存结果
可能异常,如TLB缺失
以上每一步都要检测异常以及中断请求