摘要:
实际可用的异常机制需要有运行时(Runtime)的支持。也就是说单纯的C语言是不能提供像C#、Java那样的异常捕获机制的。setjmp.h里的setjmp(jmp_buf);和longjmp(jmp_buf, int);这两个函数很特别。setjmp将当时的CPU状态存入jmp_buf,longjmp将jmp_buf中的内容恢复到CPU。 阅读全文
摘要:
当const修饰一个普通变量时,则这个普通变量不应被修改。当const修饰一个指针变量时,这个指针指向的内容不应被修改,也不应让其它指针指向这个内容。extern用于声明全局变量的方法:首先在头文件x.h里用extern修饰该变量的声明部分,然后在源文件x.c中定义该变量。 阅读全文
摘要:
《OOC》全名是《Object-oriented Programming with ANSI-C》,步步为营地讲述了作者用C来实现封装、继承、多态、异常处理和自动化工具的过程。
这本书吸引我的理由如下:
我也研究过OOC的问题,想和作者对比对比,取长补短。
学习C实现异常处理try{}catch()finally{}的方法。
学习C语言中一些难缠的东西的用法。(const、static、extern、…)
学习作者的自动化方法。 阅读全文
摘要:
当用户按下开机按钮,物理机能够加载BIOS指定的程序代码,并执行之。硬件电路就是这么设计好的。
计算机自动加载的程序只有512字节,不够用来放OS程序。所以这512字节的程序就用来装载真正的OS程序到内存某处,然后JMP到该处执行OS程序。
硬件电路提供了寄存器若干、加减乘除、中断机制、定时器、内存段属性、任务切换等功能。OS程序利用CALL、RET等实现了函数的概念;利用中断机制实现了基于事件的编程;利用定时器、内存段、任务切换实现了多任务OS;利用内存段属性实现了保护OS的功能;利用一般保护性异常中断实现了抛出异常的功能。
充分了解CPU,充分了解汇编语言,就具有了制作OS的基础。 阅读全文
摘要:
上一篇介绍了设置显示器高分辨率的方法。本篇讲一下操作系统实现多任务的方法。操作系统利用CPU的far模式的JMP指令、寄存器TR、GDT、TSS和PIT中断这些功能实现了多任务,可见CPU在设计时就考虑到了计算机要具有多任务处理的能力。也就是说,CPU、PIC等硬件支持什么功能,操作系统才能实现什么功能。这又肯定了硬件为操作系统提供API的看法。 阅读全文