【发布时间】:2017-03-25 17:01:34
【问题描述】:
我正在尝试实现模拟器主循环。模拟器全速运行。大约 60 兆赫。但我想让它以 4.77Mhz 运行。它是怎么做的?
for (;;)
{
emu_step(ctx) ;
uint64_t current = get_gtod_clock_time () ;
uint64_t elapsed = current - last_time ;
if (elapsed >= 1000000)
{
printf("Cycles: %d\n", get_cycles(ctx)) ;
set_cycles_zero(ctx, 0) ;
last_time = get_gtod_clock_time () ;
}
}
emu_step() 是执行一条指令的函数。 get_cycles(ctx) 是已执行机器周期的总和。 set_cycles_zero(ctx, 0) 将周期计数器设置为零。
【问题讨论】:
标签: c emulation simulation