Skip to content

第一周 计算机系统概述

第一讲 为什么要学习计算机系统基础

c语言程序实例与计算机系统基础

  • 例子1:-2147483648<2147483647 false int i=-2147483648;i<2147483647;true

  • 编译器如何处理字面量?十进制转换成01序列

  • 高级语言中运算规则
  • 高级语言与指令之间的对应 条件表达式
  • 机器指令的执行过程
  • 机器级数据的表示与运算 系统思维分析问题

  • 例二

sum(int a[],unsigned len){
int i,sum=0;
for(i=0;i<len-1;i++)
sum+=a[i];
return sum;
}
//len为0收访存异常。int却正常,len-1
  • 高级语言中运算规则
  • 机器指令的含义与执行
  • 计算机内部的计算电路
  • 异常的检测和处理
  • 虚拟地址空间

例子

  • 若x和Y为int 型,当x=65535,y=x^2,y=-131071
  • 对于任何int变量x和y,(x>y)==(-x<-y>)总成立吗? 当x=-2147483648,y为任意(出-2147483648)时不成立 现实世界与计算机世界成立情况不一样
  • 机器级数据的表示
  • 机器指令的执行
  • 计算机内部的运算电路

例子2

main.c
int d=100;
x=200;
int main(){
  p1();
  printf("d=%d,x=%d\n",d,x);
  return 0;
}
p1.c
double d;
void p1(){
  d=1.0;
}
  • 打印结果d=0,x=1072693248
  • 机器级数据的表示
  • 变量的存储空间分配
  • 数据的大端/小端存储方式
  • 链接器的符号解析规则

例子3

数组拷贝到堆中 alt text

alt text alt text alt text alt text alt text

理解计算机是如何生成和运行可执行文件的 为了编程时少出错(直观) 为了再程序出错时很快找到出错的地方 强化系统思维 为了更好理解计算机系统,从而编写更好程序

第二讲

计算机是通过执行程序来完成各种任务的 程序 指令 数据