第 14 章:Timer 模拟
学习目标
- 模拟定时器
- 实现时间计数
- 触发定时中断
14.1 思考:如何模拟时间?
真实硬件有晶振,模拟器怎么办?
答案:用指令计数!
uint64_t timer = 0;
void cpu_exec_once() {
// 执行指令
timer++; // 每条指令 +1
}
14.2 实现
uint64_t mtime = 0;
uint64_t mtimecmp = 0;
void timer_tick() {
mtime++;
if (mtime >= mtimecmp) {
// 触发中断
}
}