|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ブランチ履歴 ! 8: ! 9: #include "branchhistory.h" ! 10: ! 11: // コンストラクタ ! 12: BranchHistory::BranchHistory() ! 13: { ! 14: monitor.Init(70, 16); ! 15: } ! 16: ! 17: // デストラクタ ! 18: BranchHistory::~BranchHistory() ! 19: { ! 20: } ! 21: ! 22: bool ! 23: BranchHistory::MonitorUpdate() ! 24: { ! 25: int i; ! 26: uint8 t; ! 27: ! 28: // 0 1 2 3 4 5 6 ! 29: // 0123456789012345678901234567890123456789012345678901234567890123456789 ! 30: // 01 $01234567->$01234567 x123456789 16 $01234567->$01234567 x123456789 ! 31: ! 32: monitor.Clear(); ! 33: ! 34: // top は現在の位置。 ! 35: // entry[] は古い順に書き込まれるが、表示は新しい順にしたい。 ! 36: // ブランチ履歴は書き込み最適化のため256エントリあるが、そんなに ! 37: // 奥のほうが気になることはないだろう。 ! 38: t = top; ! 39: for (i = 0; i < 32; i++) { ! 40: BranchEntry& e = entry[t--]; ! 41: int x = (i / 16) * 36; ! 42: int y = i % 16; ! 43: if (e.count == 0) { ! 44: continue; ! 45: } ! 46: monitor.Print(x, y, "%02d:$%08x->$%08x", i, ! 47: e.from, e.to); ! 48: if (e.count > 1) { ! 49: monitor.Print(x + 24, y, "x%9u", e.count); ! 50: } ! 51: } ! 52: return true; ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.