之前已经将初始化工作说明完毕,这次开始完成实验要求。
实验要求如下:
响应键盘中断
我们给出的框架代码并没有响应键盘中断, 你需要在理解框架代码的基础上, 补充代码来实现相应的功能. (Hint: 按下键盘后, 中断控制器给CPU发送的中断号是33)
代码中已经实现了时钟中断的响应, 可以帮助你理解中断机制相关的代码.
功能实现之后, 你会得到一款完整的打字游戏.
首先来看下框架代码:
我们首先来看printk函数。
printk函数的参数是可变个数的,函数形参是从右往左依次入栈,所以args[0]访问第一个左边参数,args[1]访问左边第二个参数啦。
不过这些入栈的参数都是什么呢?是参数本身还是其它的什么呢?我做了两个猜测:
猜想
- 第一种猜测,存入的是指向参数的指针,证据如下:因为参数数组是
void **
,说明每个参数也就是void *
了,也就是指针对吧 - 第二种猜测,存入的是参数本身,比如int,直接就可以存入int,因为sizeof(void *) = sizeof(int) = 4,而字符串则存入
char *
,char存入char本身,但因为它只有1个字节,为了字节边界对齐,所以要补足成4个字节。
假如是第一种猜测。
那么按照这里函数写