计算机系统基础袁春风(1)为什么要学习计算机?C语言程序的举例 用系统思维分析问题 理解该问题需要知道 编译器如何处理字面量 高级语言当中的运算规则 高级语言与指令之间的对应 机器指令的执行过程 机器
#1.1为什么要学习计算机?
C语言程序的举例
用系统思维分析问题
理解该问题需要知道
编译器如何处理字面量
高级语言当中的运算规则
高级语言与指令之间的对应
机器指令的执行过程
机器级数据的表示和运算
第一个问题是转成了无符号数进行比较的,
比较左边unsignted int应该比右边带符号数的大,
第二个问题是转成了int都是有符号数了
第三个问题是应该是相等的
10000000-1==01111111
理解这种问题需要知道的是:
高级语言当中的运算规则
机器指令的含义和执行
计算机内部的运算电路
异常的检测和处理
虚拟的地址空间
理解这种问题需要知道的是:
机器级数据的表示,
机器指令的执行
计算机内部的运算电路
objdump
反汇编代码得知除以-1被优化成取负指令neg,所以没有发生除法溢出的问题
关键差别在于一条指令:
fldl还有fildl
你在想什么?
看了前面的举例:你的感觉是什么呢?
j计算机好像不可靠,从机器的角度来说,他永远是对的
程序的执行不仅仅依赖于高级语言语法和语义,还有其他的好多其他方面有关
一点不错!理解程序的执行的结果要从系统层面考虑
本来学习编程和计算机基本原理就能够当程序员,没有想到还很复杂的,计算机专业不好学
学完计算机系统基础,就会对计算机系统有了清晰的认识,,以后再学学习其他的相关的课程就容易很多
感觉要把很多的概念和知识联系起来才能够理解程序的执行结果
你说对了,把许多的概念和知识联系起来就是李国杰院士提出的系统思维,即:站在计算机系统的角度考虑问题的
进程需要独立的逻辑控制流和独立的地址空间
过程调用使用栈存放参数和局部变量等,递归过程有大量的额外的指令,增加时间开销,可能会发生栈的出
什么是计算机系统?
程序执行结果不仅仅取决于算法和程序的编写,还取决于语言处理系统,操作系统,ISA,微体系结构
不同的计算机课程处于不同的层次
必须将各个层次关联起来解决问题
计算机系统基础的内容提要
课程的目标:让学生清楚理解计算机是如何生成和运行可执行文件的
重点在高级语言以下的各个抽象层次
C语言程序设计层
数据的机器级表示,运算
语句和过程的调用的机器级表示
操作系统,变异和连接的部分内容
指令集体系结构ISA和汇编层
指令系统,机器代码,汇编语言
微体系结构以及硬件层次
CPU的通用结构
层次结构存储系统
为了编程的时候少出错,
为了在程序出错的时候很快找打出错的地方
为了明白程序是怎样在计算机上执行的
为了强化系统思维
为了更好的理解计算机系统,从而编写出更好的程序
为了后续课程的学习打好良好的基础
为了编写出更快的程序
为了更好的认识计算机系统