叙说程序猿眼中的人文世界,分享的主题内容如下:
程序那点事:软件中断指令之int 20 未公开中断
程序猿看世界:未公开中断如同一道隐秘的技术封锁线
有趣的HOOKs:微软Windows操作系统的发展历史
程序那点事:软件中断指令之int 20未公开中断
软件中断指令是在汇编程序(assembly language)中经常使用的语句,汇编程序可以理解成是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。与JAVA、C等高级语言相比较,汇编语言与机器指令“更亲近”,而不同的机器语言指令集通常是不完全相同的,所以特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。记得我们上学的时候,就会有诸如8086汇编程序、长城0520汇编程序等可以去学习。
在今天的实际应用中,汇编程序通常被应用在底层,硬件操作和高要求的程序优化的场合。虽不如高级程序设计语言简便、直观,但是汇编产生的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。所以汇编程序通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
那软件中断指令是怎么回事呢?应该说中断指令在CPU执行中享有优先执行的“特权”指令。正常情况下CPU本来好好的做自己的事情, 突然来了一个外部命令(就是这个中断指令),这时候CPU这时不管之前在做什么都会自动被暂停下来,然后转去做新的任务(也就是执行中断函数中定义好的任务)。
打个比方,一场足球比赛正在进行中(CPU正常执行原来的程序),突然裁判吹哨判了国安队犯规(来了一个中断指令),罚国安队换人(CPU执行中断指令内容),然后比赛继续进行(CPU继续执行原来程序内容)。