3
我試圖實現模擬器的主循環。仿真器全速運行。大約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)
將週期計數器清零。